从一个IEnumerable<IEnumerable<T>>获取一个IEnumerable<T>

10

公共类 Item { ... }

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个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接