C# 使用LINQ查询对象集合
我有以下内容可选择给定产品的好处列表:C# 使用LINQ查询对象集合,c#,linq,C#,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
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))
那样的怎么样
foreach (var benefit in Model.Products.Where(b => b.HeadlineBenefit == false).FirstOrDefault()) {
//work
}
鉴于FirstOrDefault()隔离单个产品,您不需要SelectMany(),例如:
foreach (var benefit in Model.Products.FirstOrDefault().Benefits.Where(b => b.HeadlineBenefit == false))
您是否试图为第一个产品获得所有好处 如果是这样,您可以执行以下操作:
//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))
注意我是如何在两个查询中使用这些条件的。如果你只是抓住第一个产品,它可能没有适用的好处 我试图分离出一个产品,但对该产品的优点做了很多选择。好的,很抱歉我省略了,那么顺序可能是:Model.Productos.single(p=>p.Id==“123”).benefits.Where(b=>/*b cond.*/);