簡體   English   中英

如何將LINQ查詢轉換為使用Lambda表達式

[英]How to convert a LINQ query to use lambda expressions

我正在嘗試將此linq代碼切換為lambda表達式:

foreach (var id in orderLinesToSplit)
{
    int result =
        (from ol in orderLines
        from splittedOl in orderLines
        where ol.Key == id
            && ol.Value == splittedOl.Value
            && ol.Key != splittedOl.Key
        select splittedOl.Key).FirstOrDefault();
}

目標是獲得對id (從oderLinesToSplit )和result (從linq查詢得到的結果)對的Dictionary<int, int> 可以只用一個lambda表達式完成嗎?

謝謝

var result= 
(
    from ol in orderLines
    from splittedOl in orderLines
    where orderLinesToSplit.Contains(ol.Key)
        && ol.Value == splittedOl.Value
        && ol.Key != splittedOl.Key
      select new
      {
        splittedOl.Key,
        splittedOl.Value
      }
    ).ToDictionary (v =>v.Key,v=>v.Value);

或者,如果您真的想要一個表達式。 然后是這樣的:

var result=
    (
        db.orderLines.Join
            (
                db.splittedOl,
                ol=>ol.Value,
                splittedOl=>splittedOl.Value,
                (ol,splittedOl)=>new 
                {
                    olKey=ol.Key,
                    splittedOlKey=splittedOl.Key
                }
            ).Where(l =>l.olKey!= l.splittedOlKey && orderLinesToSplit.Contains(l.olKey))
            .ToDictionary(l =>l.olKey,v=>v.splittedOlKey)
    );

其中db是linq數據上下文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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