我有以下内容选择给定产品的好处列表:
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))
答案 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))
请注意我是如何在两个查询中使用这些条件的。如果您只是抓住第一个产品,它可能没有任何适用的好处!