查询语法有效,但lambda语法无效;t表示linq-select语句
本文关键字:语法 表示 语句 linq-select lambda 有效 查询 无效 | 更新日期: 2023-09-27 18:27:39
此代码不起作用:
return this.Context.StockTakeFacts.Select(stf => ((stf.StockTakeId == stocktakeid) && (stf.FactKindId == ((int)kind)))).ToList<IStockTakeFact>();
这句话的作用是:
var f = from stf in this.Context.StockTakeFacts
where (stf.StockTakeId == stocktakeid) && (stf.FactKindId == ((int)kind))
select stf;
return f.ToList<IStockTakeFact>();
有什么区别??第一个抱怨IQueryable没有toList方法,所以我认为我写错了第一个语句。
您需要使用Where
调用来过滤元素(而不是Select
)
return this.Context.StockTakeFacts
.Where(stf => ((stf.StockTakeId == stocktakeid) && (stf.FactKindId == ((int)kind))))
.ToList<IStockTakeFact>();
当使用显式LINQ API查询时,select item
是隐式的。可以通过调用Select
使其显式,但这不是必需的(除非您以某种方式映射值)
您必须使用Where()
才能通过谓词进行筛选:
return this.Context.StockTakeFacts
.Where(stf => stf.StockTakeId == stocktakeid
&& stf.FactKindId == (int)kind)
.ToList<IStockTakeFact>();