Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用lambda查找所有实体_C#_Linq - Fatal编程技术网

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