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()