2010-10-28 161 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)) 

注意我是如何使用的標準爲兩個查詢。如果你只是購買第一款產品,它可能沒有適用的優勢!