C# 使用lambda查找所有实体
我有一个C# 使用lambda查找所有实体,c#,linq,C#,Linq,我有一个列表(人)每个人都有一个列表(孩子) 如果我想在林克找到所有的孩子,我会这么做 var kids=new List<Kids>(); foreach(var p in people) { foreach(var kid in p.Kids) { kids.Add(kid); } } var kids=newlist(); foreach(人的var p) { foreach(p.Kids中的变量kid) { 添加(kid); }
列表
(人)每个人都有一个列表
(孩子)
如果我想在林克找到所有的孩子,我会这么做
var kids=new List<Kids>();
foreach(var p in people)
{
foreach(var kid in p.Kids)
{
kids.Add(kid);
}
}
var kids=newlist();
foreach(人的var p)
{
foreach(p.Kids中的变量kid)
{
添加(kid);
}
}
有没有一种使用LINQ的单行方法呢?它非常简单:
将序列的每个元素投影到IEnumerable并展平
将结果序列转换为一个序列
(如果您想要一个列表
而不是IEnumerable
,只需对结果调用.ToList()
。您可以使用扩展方法
var kids = new List(people.SelectMany(person => person.Kids));
“LINQ非lambda风格”版本的SelectMany
:
var allKids =
from p in people
from k in p.Kids // secondary "from" makes SelectMany (aka flat map)
select k;
// Result from above is IEnumerable, to Force evaluation as a List:
List<Kid> allKidsList = allKids.ToList();
var allKids=
从p到人
从k到p.Kids//secondary“from”使SelectMany(又名平面图)
选择k;
//上述结果为IEnumerable,强制评估为列表:
List allKidsList=allKids.ToList();
您是否试图查看“Kids”中是否存在“Kid”?
var allKids =
from p in people
from k in p.Kids // secondary "from" makes SelectMany (aka flat map)
select k;
// Result from above is IEnumerable, to Force evaluation as a List:
List<Kid> allKidsList = allKids.ToList();