似乎这种情况已经得到了回答,但我无法找到它。
我的问题非常简单,如何在一个语句中执行此操作,以便不必新建空列表然后在下一行聚合,我可以使用单个linq语句输出我的最终列表。详细信息是每个包含住宅列表的项目列表,我只想将所有住宅放在一个单一的列表中。
var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));
答案 0 :(得分:268)
您想使用SelectMany
扩展方法。
var residences = details.SelectMany(d => d.AppForm_Residences).ToList();
答案 1 :(得分:43)
使用SelectMany
var all = residences.SelectMany(x => x.AppForm_Residences);
答案 2 :(得分:30)
有一个示例代码:
List<List<int>> l = new List<List<int>>();
List<int> a = new List<int>();
a.Add(1);
a.Add(2);
a.Add(3);
a.Add(4);
a.Add(5);
a.Add(6);
List<int> b = new List<int>();
b.Add(11);
b.Add(12);
b.Add(13);
b.Add(14);
b.Add(15);
b.Add(16);
l.Add(a);
l.Add(b);
var r = l.SelectMany(d => d).ToList();
foreach(int i in r)
{
Console.WriteLine(i);
}
输出将是:
1
2
3
4
5
6
11
12
13
14
15
16
Press any key to continue . . .
答案 3 :(得分:27)
对于那些需要查询表达式语法的人:使用两个来自语句
var residences = (from d in details from a in d.AppForm_Residences select a).ToList();