Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ查询对象集合_C#_Linq - Fatal编程技术网

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.*/);