Linq - 检索 SelectMany(选择多个)之后的第一个列表



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

朴素的例子:

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

有什么办法可以做到这一点吗?

假设你实际上不想要objList,而是我们当时看到的objList元素,我认为你只是想要:

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)
{
    ...
}

最新更新