LINQ:查询集合中的集合

本文关键字:集合 查询 LINQ | 更新日期: 2023-09-27 18:02:02

我有以下结构:

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

LINQ:查询集合中的集合

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

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

看起来像是你想要的:

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

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

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