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# 将列表列表转换为单个列表_C#_Linq - Fatal编程技术网

C# 将列表列表转换为单个列表

C# 将列表列表转换为单个列表,c#,linq,C#,Linq,似乎这是一个已经被回答过的问题,但我找不到 我的问题很简单,我如何在一个语句中完成这项工作,这样就不必重新创建空列表,然后在下一行中进行聚合,而可以使用一个linq语句来输出最终列表。详细信息是一个项目列表,每个项目都包含一个住宅列表,我只希望所有住宅都在一个平面列表中 var residences = new List<DAL.AppForm_Residences>(); details.Select(d => d.AppForm_Residences).ToList().F

似乎这是一个已经被回答过的问题,但我找不到

我的问题很简单,我如何在一个语句中完成这项工作,这样就不必重新创建空列表,然后在下一行中进行聚合,而可以使用一个linq语句来输出最终列表。详细信息是一个项目列表,每个项目都包含一个住宅列表,我只希望所有住宅都在一个平面列表中

var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));
var-residences=newlist();
details.Select(d=>d.AppForm_Residences.ToList().ForEach(d=>Residences.AddRange(d));
使用SelectMany

var all = residences.SelectMany(x => x.AppForm_Residences);

您想使用
SelectMany
扩展方法

var residences = details.SelectMany(d => d.AppForm_Residences).ToList();

对于那些需要查询表达式语法的人:使用两个from语句

var residences = (from d in details from a in d.AppForm_Residences select a).ToList();

以下是您的示例代码:

List<int> listA = new List<int> { 1, 2, 3, 4, 5, 6 };

List<int> listB = new List<int> { 11, 12, 13, 14, 15, 16 };

List<List<int>> listOfLists = new List<List<int>> { listA, listB };

List<int> flattenedList = listOfLists.SelectMany(d => d).ToList();

foreach (int item in flattenedList)
{
    Console.WriteLine(item);
}

谢谢@JaredPar从错误的元素中进行了选择,但感谢你们的指导。可能重复
1
2
3
4
5
6
11
12
13
14
15
16
Press any key to continue . . .