带有大量嵌套列表的列表上的LINQ

Vaj*_*dre 2 c# linq

我遇到嵌套列表的问题.所以我有3个课:

public class Class1
{
   public string Name {get;set;}
   public List<Class2> Class2List {get;set;}
}
public class Class2
{
   public string Name {get;set;}
   public List<Class3> Class3List {get;set;}
}
public class Class3
{
   public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我想从Class1中选择所有Class3.Name,其中Class2.Name ="something",并且重要的是结果将是IEnumerable字符串.我该如何解决?

Hei*_*nzi 6

LINQ表达式可以有多个嵌套from子句:

// nested from clauses
var names = from c1 in myClass1List
            from c2 in c1.Class2List
            where c2.Name == "something"
            from c3 in c2.Class3List
            select c3.Name;
Run Code Online (Sandbox Code Playgroud)

为了完整性,以下是使用方法语法的两个变体:

var names = myClass1List
    .SelectMany(c1 => c1.Class2List.Where(c2 => c2.Name == "something"))
    .SelectMany(c2 => c2.Class3List.Select(c3 => c3.Name));

var names = myClass1List
    .SelectMany(c1 => c1.Class2List
        .Where(c2 => c2.Name == "something")
        .SelectMany(c2 => c2.Class3List
            .Select(c3 => c3.Name)));
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`SelectMany`添加此查询的方法语法版本,这将使答案更好) (2认同)