Linq 列表列表到单个列表
Posted
技术标签:
【中文标题】Linq 列表列表到单个列表【英文标题】:Linq list of lists to single list 【发布时间】:2009-07-17 20:34:54 【问题描述】:似乎这是一种已经得到回答但我找不到的东西。
我的问题很简单,我怎样才能在一个语句中做到这一点,这样我就可以有一个输出我的最终列表的单个 linq 语句,而不是必须新建空列表然后在下一行中聚合。 details 是一个项目列表,每个项目都包含一个住宅列表,我只想要一个平面列表中的所有住宅。
var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));
【问题讨论】:
How to merge a list of lists with same type of items to a single list of items?的可能重复 【参考方案1】:您想使用SelectMany
扩展方法。
var residences = details.SelectMany(d => d.AppForm_Residences).ToList();
【讨论】:
谢谢。 @JaredPar 选择了错误的元素,但感谢你们的指导。【参考方案2】:使用 SelectMany
var all = residences.SelectMany(x => x.AppForm_Residences);
【讨论】:
【参考方案3】:这是一个示例代码:
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);
输出将是:
1
2
3
4
5
6
11
12
13
14
15
16
Press any key to continue . . .
【讨论】:
【参考方案4】:对于那些想要查询表达式语法的人:您使用两个 from 语句
var residences = (from d in details from a in d.AppForm_Residences select a).ToList();
【讨论】:
以上是关于Linq 列表列表到单个列表的主要内容,如果未能解决你的问题,请参考以下文章