从IEnumerable <ienumerable <t>&gt;获取IEnumerable <t> </ienumerable <t> </t>

时间:2008-10-28 17:24:26

标签: c# .net linq ienumerable

公共类项目     {         ...     }

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个循环。

1 个答案:

答案 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);