Linq - 在SelectMany之后检索第一个列表

时间:2012-08-13 16:04:55

标签: linq c#-4.0

我有一个对象列表,其中每个对象都包含一个内部对象列表,我要提取的是父列表(左列表),但是我被迫使用SelectMany函数..它可能吗?

天真的例子:

var query = objList.SelectMany(p => p.InternalList)
                   .Where(internalObj => internalObj.SomeProprerty == true)
                   .SELECT(objList);

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

假设你实际想要objList,而不是我们当时正在查看的objList元素,我想你只想要:< / p>

var query = objList.SelectMany(p => p.InternalList, (o, p) => new { o, p })
                   .Where(pair => pair.p.SomeProperty)
                   .Select(pair => pair.o);

如果那不是你想要的,那么如果你给出一个具体的例子,那将会非常有帮助。

编辑:如果您只想要来自objList任何示例,其中内部列表的任何元素的SomeProperty值为true,那么您可以这样做更容易这样:

var value = objList.FirstOrDefault(o => o.InternalList.Any(p => p.SomeProperty));
if (value != null)
{
    ...
}