如何在C#中联合列表<List >

我有一个List<List> ,其中包含

 { {"A" , "B" }, {"C" , "D" } } 

我需要将所有内部列表合并到另一个列表中

因此生成的List将包含

  {"A","B","C","D"} 

现在我使用for loop来做到这一点

有没有办法使用LINQLambda Expression

请帮我这样做。

提前致谢。

不完全是一个联盟,但你可以尝试这个

 YourList.SelectMany(l=>l).Distinct() 
 List> collections = new List>() { new List(){"A" , "B" }, new List() {"C" , "D" } }; var list = collections.SelectMany(x => x).ToList(); 

SelectMany构建一个表达式树,在评估时将列表列表展平为单个组合成员列表。

ToList强制要求计算表达式树,并生成List。

如果你想消除重复,你可以在调用’ToList()之前添加一个Distinct调用

您可以使用SelectMany扩展方法。

 List> masterList = { {"A" , "B" }, {"C" , "D" } }; IEnumerable results = masterList.SelectMany(l => l); 
 var result = myLists.SelectMany(l => l); 

聚合怎么样?

 myLists.Aggregate((left, right) => left.Union(right)); 

对我来说,这比使用SelectMany更具表现力,因为它正在告诉你你正在做什么: 通过在它们上面调用union来聚合你的列表列表。

只是为了踢:

 (from list in theList from e in list select e).Distinct().ToList() 

这当然与@Alexander Taran的解决方案相同,只是使用查询语法而不是lambda语法。 (或者至少它应该是 – 我没有我的LINQPad方便。)