C# 具有大量嵌套列表的列表上的LINQ

C# 具有大量嵌套列表的列表上的LINQ,c#,linq,C#,Linq,我在嵌套列表方面遇到了问题。所以我有三个班: 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 clas

我在嵌套列表方面遇到了问题。所以我有三个班:

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;}
}
公共类1
{
公共字符串名称{get;set;}
公共列表Class2List{get;set;}
}
公共课2
{
公共字符串名称{get;set;}
公共列表Class3List{get;set;}
}
公共班级3
{
公共字符串名称{get;set;}
}

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

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;

为了完整起见,这里有两个使用方法语法的变体:

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)));
List listNames=Class1.Where(f=>f.Class2List.Where(g=>string.Compare(g.Name,“something”)==0))。选择(h=>h.Name.ToList()

您还可以使用
SelectMany添加此查询的方法语法版本,这将使答案更加准确)@Eduard:谢谢您的编辑,我已经使用VB.NET太久了。;-)比你更快的回答。解决办法是炉排,没问题。我相信大家都明白了:)。我自己也有着悠久的德尔福历史。只是一些年轻的程序员可能正在逐个字符地查看代码。非常感谢大家!
 List<string> listNames = Class1.Where(f => f.Class2List.Where(g => string.Compare(g.Name, "something") == 0)).Select(h => h.Name).ToList()