公共类项目 { ... }
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<List<Item>>
,而我想只有一个IEnumerable<Item>
。
我在这里要求尽量避免编码2个循环。
答案 0 :(得分:20)
您需要SelectMany
,它在查询表达式中表示为第二个(及后续)from
子句:
var items = from order in customer.Orders
from item in order.Items
select item;
或者,忽略查询表达式:
var items = customer.Orders.SelectMany(order => order.Items);