【问题标题】:LINQ: Query a collection within a collectionLINQ:查询集合中的集合
【发布时间】:2011-10-05 15:00:09
【问题描述】:

我有以下结构:

public class Customer
{
  public int ID { get; set; }
  public List<Order> Orders { get; set; }
}

public class Order
{
  public int ID { get; set; }
  public int ProductID { get set; }
}

我需要获取订购 ProductID = 6 的客户的集合。流畅风格的 LINQ 会是什么样子?

我在下面尝试但没有运气:

var customers = allCustomers.SelectMany(c => c.Orders.Select(o => o.ProductID.Equals(6))).ToArray();

【问题讨论】:

    标签: c# .net linq generics collections


    【解决方案1】:
    var customers = allCustomers.Where(c => c.Orders.Any(o => o.ProductID == 6));
    

    【讨论】:

      【解决方案2】:
      allCustomers.Where(c => c.Orders.Any(o => o.ProductID == 6))
      

      【讨论】:

        【解决方案3】:

        看起来像你想要的:

        var query = allCustomers.Where(c => c.Orders.Any(o => o.ProductID == 6));
        

        【讨论】:

          【解决方案4】:

          var customers = allCustomers.Where(c =&gt; c.Orders.Any(o =&gt; o.ProductID == 6));

          【讨论】:

          • 在 VB 中:Dim customers = allCustomers.Where(Function(c) c.Orders.Any(Function(o) o.ProductID = 6))
          【解决方案5】:

          一个不错的方法是像这样从另一边尝试

          var customers from p in Order where p.ProductId == 6 select p.Customer
          

          当然,您需要像这样在 Order 类中添加 Customer 属性

          public class Order
          {
            public int ID { get; set; }
            public int ProductID { get set; }
            public Customer Customer { get; set; }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多