从Linq lambda返回多个字段

MrB*_*liz 1 .net c# lambda

我有以下代码从数据库返回结果columnName = Y'.代码字很好,直到我想限制查询返回的字段.

我收到了错误

无法隐式转换类型 'System.Linq.IQueryable [AnonymousType#1' 到 'System.Linq.IQueryable [MyApp.Models.Approved]'.存在显式转换(您是否错过了演员?)

public IQueryable<Approved> ReturnRecordsByObjectiveFlag(string columnName)
    {
        var param = Expression.Parameter(typeof(Approved), "x");
        var predicate = Expression.Lambda<Func<Approved, bool>>(
            Expression.Equal(
                Expression.PropertyOrField(param, columnName),
                Expression.Constant('Y',typeof(char?))
            ), param);
        return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });
    }
Run Code Online (Sandbox Code Playgroud)

在这条线上我得到了错误

return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });  
Run Code Online (Sandbox Code Playgroud)

我做演员的行踪?

非常感谢Marc Gravell 回答了同一方法的早期问题

小智 6

这应该工作

return db.Approved.Where(predicate).Select(x =>new Approved{x.RefNo, x.RefGroup, x.Location });  
Run Code Online (Sandbox Code Playgroud)

它给出了该错误,因为select语句正在创建一个匿名类型