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