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

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

public class Class1 { public string Name {get;set;} public List Class2List {get;set;} } public class Class2 { public string Name {get;set;} public List Class3List {get;set;} } public class Class3 { public string Name {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)).Select(h => h.Name).ToList()