2011-07-15 49 views
1

我有2個列表包含我創建的自定義類的條目。基本上,每個列表都包含一個客戶訂單 - 但它們來自2個不同的來源,因此是2個列表。但是,這兩個列表都是相同的類型(我的自定義類),並且有一個字段用於標識訂單所屬的客戶。通過LINQ中的多個枚舉組進行分組

我想要做的是創建一個新列表,其中包含每個訂單都在列表中的每個客戶以及這兩個列表中的訂單數。所以,他們會有3個字段:客戶ID,列表1中的訂單數量以及列表2中的訂單數量。

我知道有很多方法可以做到這一點,但我所有的方式覺得似乎不必要的複雜。有什麼辦法可以做到這一點?

+0

你能描述一下你想過做這個,你會爲「不必要的複雜性」的分類方式?只是爲了讓我們中的一些人不浪費時間寫一些你已經不喜歡的東西。 – jessegavin

回答

2

像這樣的事情將是進一步調整一個良好的起點:

var ordersInList1 = list1.GroupBy(order => order.CustomerId) 
         .ToDictionary(g => g.Key, g => g.Count()); 
var ordersInList2 = list2.GroupBy(order => order.CustomerId) 
         .ToDictionary(g => g.Key, g => g.Count()); 

var results = ordersInList1.Keys.Union(ordersInList2.Keys) 
          .Select(id => 
          new { 
           CustomerId = id, 
           CountOrders1 = ordersInList1[id], 
           CountOrders2 = ordersInList2[id] 
          }) 
          .ToArray();