如何从c#中的列表列表中获取不同的元素

Par*_*Rao 2 c# linq list

我有一个列表列表,其中子列表是字符串列表.我期待的结果是所有不同字符串的列表.例如:

var listoflist = new List<List<string>> { new List<string> { "A", "B", "C" },
                                          new List<string> { "A", "B", "D", "E" } };
Run Code Online (Sandbox Code Playgroud)

对于上面的列表,我希望输出为{"A","B","C","D","E"}

这是我找到的解决方案,但我觉得它不是一个有效的解决方案.请提供你的想法.

var listoflist = new List<List<string>> { new List<string> { "A", "B", "C" },
                                          new List<string> { "A", "B", "D", "E" } };

List<string> distinctList = new List<string>();
listoflist.ForEach(list =>
{
    distinctList.AddRange(list);
});

distinctList = distinctList.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

Yuv*_*kov 8

您可以Enumerable.SelectMany用来展平列表:

var list = listoflist.SelectMany(x => x).Distinct();
Run Code Online (Sandbox Code Playgroud)

如果要实现查询并获取List<string>,请添加ToList().