簡體   English   中英

查詢語法有效,但lambda語法不適用於linq select語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM