[英]Query syntax works but lambda syntax doesn't for linq select statement
該代碼不起作用:
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>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.