从IEnumerable <IEnumerable <T >>获取IEnumerable <T>

Zot*_*ote 10 .net c# linq ienumerable

公共课项{...}

public class Order
{
    public List<Item> Items
    ...
}

public class Customer
{
    public List<Order> Orders
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,使用LINQ我需要获得客户购买的所有商品.我怎么能够?

我尝试了类似var items = from o in cust.Orders select o.Items;但结果是IEnuberable<List<Item>>,我只想一个IEnumerable<Item>.

我在这里要求尽量避免编码2个循环.

Jon*_*eet 20

您需要SelectMany,它在查询表达式中表示为第二个(和后续)from子句:

var items = from order in customer.Orders
            from item in order.Items
            select item;
Run Code Online (Sandbox Code Playgroud)

或者,忽略查询表达式:

var items = customer.Orders.SelectMany(order => order.Items);
Run Code Online (Sandbox Code Playgroud)

  • SelectMany很好!:-) (2认同)