2010-03-15 67 views
1

我想知道是否可以將2 linq表達式合併爲1表示法。我相信它應該是可能的,但我無法管理的各種嘗試。如何將2 linq表與groupby子句合併爲1

var prevProvisionsBySubBook = (from provision in prevProvisions 
       group provision by provision.SubBook 
        into subBookGrouping 
        select 
        new 
        { 
         Key = subBookGrouping.Key, 
         Value = subBookGrouping.Sum(t => t.ProvisionUSD) 
        }); 


     var currentProvisionsBySubBook 
      = (from provision in currentProvisions 
       group provision by provision.SubBook 
        into subBookGrouping 
        select new 
        { 
         Key = subBookGrouping.Key, 
         Value = subBookGrouping.Sum(t => t.ProvisionUSD) 
        }); 

     var adjustmentChangeBySubBook 
      = (from current in currentProvisionsBySubBook 
       select new 
       { 
        Key = current.Key, 
        Value = current.Value 
          - (prevProvisionsBySubBook.Any() ? prevProvisionsBySubBook.Where(t => t.Key == current.Key).Single().Value : 0) 
       }); 

任何幫助將apprecaited。

回答

2

你可以這樣說:

var adjustmentChangeBySubBook = 
    from provision in 
     (from currentProvision in currentProvisions select new 
      { 
       currentProvision.SubBook, 
       CurrentUSD = currentProvision.ProvisionUSD, 
       PreviousUSD = 0 
      }).Concat 
     (from prevProvision in prevProvisions select new 
      { 
       prevProvision.SubBook, 
       CurrentUSD = 0, 
       PreviousUSD = prevProvision.ProvisionUSD 
      }) 
    group provision by provision.SubBook into subBookGrouping select new 
    { 
     subBookGrouping.Key, 
     Value = subBookGrouping.Sum(t => t.CurrentUSD - t.PreviousUSD) 
    };