使用LINQ查询对象集合

时间:2010-10-28 11:58:19

标签: c# linq

我有以下内容选择给定产品的好处列表:

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

但是我想更改此选项以选择集合中第一个产品的befits列表。我认为下面的内容可行,但它不会:

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

3 个答案:

答案 0 :(得分:1)

鉴于FirstOrDefault()隔离了单个产品,您不需要SelectMany(),例如:

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

答案 1 :(得分:0)

这样的事情怎么样?

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

答案 2 :(得分: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))

请注意我是如何在两个查询中使用这些条件的。如果您只是抓住第一个产品,它可能没有任何适用的好处!