LINQ Group By并选择收藏 [英] LINQ Group By and select collection

查看:94
本文介绍了LINQ Group By并选择收藏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个结构

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆