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

Tho*_*eld 11 c# linq lambda

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

{  {"A" , "B" }, 
   {"C" , "D" }
}
Run Code Online (Sandbox Code Playgroud)

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

所以结果List<String>将包含

     {"A","B","C","D"}
Run Code Online (Sandbox Code Playgroud)

现在我正在使用for loop这样做

有没有办法做这个使用LINQLambda Expression.

请帮我这样做.

提前致谢.

JR *_*aid 14

List<List<string>> collections = new List<List<string>>()
        {
          new List<string>(){"A" , "B" }, 
          new List<string>() {"C" , "D" }
        };

var list = collections.SelectMany(x => x).ToList();
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ale*_*ran 13

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

YourList.SelectMany(l=>l).Distinct()
Run Code Online (Sandbox Code Playgroud)

  • 实际上,Union实际上只是Concat().Distinct().而不是Concat,你使用SelectMany,因为它是一个列表列表...所以......换句话说......这是我在这里看到的唯一正确的答案.所有其他答案都忽略了可能存在重复.OP希望联盟摆脱欺骗. (3认同)