如何在C#中联合列表<List >
我有一个List<List>
,其中包含
{ {"A" , "B" }, {"C" , "D" } }
我需要将所有内部列表合并到另一个列表中
因此生成的List
将包含
{"A","B","C","D"}
现在我使用for loop
来做到这一点
有没有办法使用LINQ
或Lambda 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方便。)