【问题标题】:Get a IEnumerable<T> from a IEnumerable<IEnumerable<T>>从 IEnumerable<IEnumerable<T>> 获取 IEnumerable<T>
【发布时间】:2008-10-28 17:24:26
【问题描述】:

公共类项目 { ... }

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

【问题讨论】:

    标签: c# .net linq ienumerable


    【解决方案1】:

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

    var items = from order in customer.Orders
                from item in order.Items
                select item;
    

    或者,忽略查询表达式:

    var items = customer.Orders.SelectMany(order => order.Items);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      相关资源
      最近更新 更多