2011-04-13 69 views
1

我有一个ICollection<Product>帮助与LINQ投影

var products = productRepository.FindAll();

Product有一个名为Orders属性,它是一个ICollection<Order>

我试图最后得到ICollection<Order>,对于给定的CustomerId

换句话说:

鉴于产品的集合,我想要检索订单列表特定客户

这是我有:

var orders = products 
       .Where(x => x.Orders != null) 
       .Where(x => x.Orders.Any(y => y.CustomerId == 10)) 
       .Select(x => x.Orders) 
       .ToList(); 

但我最终以List<ICollection<Order>>,我想要一个ICollection<Order>。我需要做某种分组吗?

回答

5

关于什么:

var orders = products 
      .Where(x => x.Orders != null) 
      .Where(x => x.Orders.Any(y => y.CustomerId == 10)) 
      .SelectMany(x => x.Orders) 
      .ToList(); 
+0

是的,这就是它 - 由于某种原因,我完全忘了'SelectMany'。干杯! – RPM1984 2011-04-13 04:19:07

0

如果你想订单单一产品的集合,然后这会工作

var orders = products 
       .Where(x => x.Orders != null) 
       .Where(x => x.Orders.Any(y => y.CustomerId == 10)) 
       .Select(x => x.Orders) 
       .Single(); 
+0

谢谢,但那不是我想要的。 – RPM1984 2011-04-13 04:25:14

+1

@ RPM1984没关系,今天我在LINQ学习了'SelectMany'。非常感谢你和@zerkms ...:D – 2011-04-13 04:28:56