我知道我可以使用Linq
来生成2 IEnumerable
个集合的联合。
应该是这样的:
IEnumerable<MyClass> first;
IEnumerable<MyClass> second;
IEnumerable<MyClass> union = first.Union(second);
现在假设我有一个IEnumerable
我班级的集合,我想计算所有这些的联合。有没有建议采用优雅(可能有效)的方式?
我试过这样的事情,但这不是正确的语法:
IEnumerable<IEnumerable<MyClass>> collection;
IEnumerable<MyClass> result = Enumerable.Empty<MyClass>().Union( foreach (MyClass c in collection ){ yield return c;});
答案 0 :(得分:3)
collection.SelectMany(i => i).Distinct(); //will get your result.
答案 1 :(得分:3)
O(n)中的以下方法,而不是使用Aggregate
的方法,即O(n²)。
collection.SelectMany(i => i).Distinct()