2010-10-28 104 views
-1

我有一个选择给定产品的好处名单如下:使用LINQ查询对象的集合

foreach (var benefit in Model.Products.Where(x => x.ProductId == "454").SelectMany(p => p.Benefits).Where(b => b.HeadlineBenefit == false)) 

不过,我想改变这个选择应景的列表中的第一款产品集合。我认为下面会工作,但它不:

foreach (var benefit in Model.Products.FirstOrDefault().SelectMany(p => p.Benefits).Where(b => b.HeadlineBenefit == false)) 

回答

0

这样的事情呢?

foreach (var benefit in Model.Products.Where(b => b.HeadlineBenefit == false).FirstOrDefault()) { 
    //work 
    } 
1

鉴于FirstOrDefault()分离的单品,你不需要的SelectMany(),例如:

foreach (var benefit in Model.Products.FirstOrDefault().Benefits.Where(b => b.HeadlineBenefit == false)) 
+0

我试图隔离单个产品,但做了很多关于该产品的好处。 – FloatLeft 2010-10-28 14:32:41

+0

好的,对不起我的omition,那么序列可能是:Model.Productos.Single(p => p.Id ==“123”)。 – 2010-10-28 18:50:16

0

你试图让所有的利益为先的产品?

如果是这样,你可以做到以下几点:

//get a product that has at least one benefit matching our criteria 
var product = Model.Products.Where(m => m.Benefits.Any(b => !b.HeadlineBenefit)).FirstOrDefault(); 

//now do something with all of the benefits that match our criteria 
foreach (var benefit in product.Benefits.Where(b => !b.HeadlineBenefit)) 

注意我是如何使用的标准为两个查询。如果你只是购买第一款产品,它可能没有适用的优势!