LINQ将列表项列表加入到一个列表中

时间:2018-05-29 09:07:28

标签: c# .net linq

我有一个这样的清单:

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

但这显然不起作用。

2 个答案:

答案 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>,并将生成的序列展平为一个序列。