我有一个这样的清单:
public class list
{
public IList<list2> list {get;set;}
}
这样list2
:
public class list2
{
public string something {get;set;}
}
我想要的结果是:
var listWithAll = new List<list2>();
foreach (var item in list)
{
foreach (var item2 in item.list)
{
listWithAll.Add(item2);
}
}
我可以使用一个简短的LINQ处理程序吗? 像这样:
list.Select(x => x.list);
但这显然不起作用。
答案 0 :(得分:4)
使用LINQ的SelectMany
方法
var newlist = list.SelectMany(x => x.list).ToList();
SelectMany
展平返回列表列表的查询。
有关详细信息,请参阅here
答案 1 :(得分:3)
您可以将SelectMany
用于此目的:
var listWithAll = list.SelectMany(x => x.list).ToList();
SelectMany
:
将序列的每个元素投影到
IEnumerable<T>
,并将生成的序列展平为一个序列。