获得IEnumerable< T>来自IEnumerable< IEnumerable< T>>
-
04-07-2019 - |
题
公共类项目 { ... }
public class Order
{
public List<Item> Items
...
}
public class Customer
{
public List<Order> Orders
...
}
现在,使用LINQ我需要获得客户购买的所有商品。我怎么能?
我尝试了类似 var items = from o in cust.Orders select o.Items;
但结果是 IEnuberable&lt; List&lt; Item&gt;&gt;
我想要一个 IEnumerable&lt; Item&gt;
。
我在这里要求尽量避免编码2个循环。
解决方案
您需要 SelectMany
,在查询表达式中表示为子句中的第二个(和后续):
var items = from order in customer.Orders
from item in order.Items
select item;
或者,忽略查询表达式:
var items = customer.Orders.SelectMany(order => order.Items);
不隶属于 StackOverflow