2011-07-15 45 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();