use*_*230 19 c# linq generics union list
我有一个List<List<int>>
.我想将它转换为List<int>
每个int都是唯一的.我想知道是否有人使用LINQ有一个优雅的解决方案.
我希望能够使用Union方法,但每次都会创建一个新的List <>.所以我想避免做这样的事情:
List<int> allInts = new List<int>();
foreach(List<int> list in listOfLists)
allInts = new List<int>(allInts.Union(list));
Run Code Online (Sandbox Code Playgroud)
有什么建议?
谢谢!
flq*_*flq 48
List<List<int>> l = new List<List<int>>();
l.Add(new List<int> { 1, 2, 3, 4, 5, 6});
l.Add(new List<int> { 4, 5, 6, 7, 8, 9 });
l.Add(new List<int> { 8, 9, 10, 11, 12, 13 });
var result = (from e in l
from e2 in e
select e2).Distinct();
Run Code Online (Sandbox Code Playgroud)
但是现在我真的把它写成了
var result2 = l.SelectMany(i => i).Distinct();
Run Code Online (Sandbox Code Playgroud)
Amy*_*y B 15
List<int> result = listOfLists
.SelectMany(list => list)
.Distinct()
.ToList();
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
怎么样:
HashSet<int> set = new HashSet<int>();
foreach (List<int> list in listOfLists)
{
set.UnionWith(list);
}
return set.ToList();
Run Code Online (Sandbox Code Playgroud)