LINQ Group By并选择收藏 [英] LINQ Group By and select collection
问题描述
我有这个结构
Customer
- has many Orders
- has many OrderItems
我想在给定OrderItems
子集的情况下通过LINQ生成CustomerItems
的列表:
I want to generate a list of CustomerItems
via LINQ given a subset of OrderItems
:
List of new { Customer, List<OrderItem> Items }
这是客户从项目子集中订购的所有项目的分组
which is a grouping of all the items a Customer has ordered from the subset of items
我如何使用LINQ追溯订单和按客户分组以生成该对象?
How can i use LINQ to back track through the order and group by Customer to generate this object?
到目前为止,我在做类似的事情
so far I'm on something like
items
.GroupBy(i => i, i => i.Order.Customer, (i, customer) => new {customer, i})
但是,那显然不是列表.我猜我那里需要一个SelectMany,但是可以使用一些指针.
But thats obviously not a List. I'm guessing I need a SelectMany in there somewhere, but could do with some pointers.
推荐答案
我认为您想要:
items.GroupBy(item => item.Order.Customer)
.Select(group => new { Customer = group.Key, Items = group.ToList() })
.ToList()
如果要继续使用当前正在使用的GroupBy
的重载,可以执行以下操作:
If you want to continue use the overload of GroupBy
you are currently using, you can do:
items.GroupBy(item => item.Order.Customer,
(key, group) => new { Customer = key, Items = group.ToList() })
.ToList()
...但是我个人觉得不太清楚.
...but I personally find that less clear.
这篇关于LINQ Group By并选择收藏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!