我有2个列表,其中包含我创建的自定义类的条目。基本上,每个列表包含客户订单 - 但它们来自2个不同的来源,因此是2个列表。两个列表都是相同的类型(我的自定义类),并且有一个字段用于标识订单所属的客户。
我想要做的是制作一个新列表,其中包含在任一列表中有订单的每个客户,以及两个列表中订单的计数。因此,它们将是3个字段:客户的ID,列表1中的订单数量以及列表2中的订单数量。
我知道有很多方法可以做到这一点,但我想到的所有方式似乎都是不必要的复杂。有没有办法可以做到这一点?
答案 0 :(得分: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();