我有以下代码,它从 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 });
}
在这一行我得到了错误
return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });
我在哪里制作类型转换?
非常感谢 Marc Gravell Answering an earlier question用同样的方法
最佳答案
这应该可行
return db.Approved.Where(predicate).Select(x =>new Approved{x.RefNo, x.RefGroup, x.Location });
它给出了那个错误,因为 select 语句正在创建一个匿名类型
关于c# - 从 Linq lambda 返回多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714596/