计算IEnumerable集合的最优雅高效的方法

时间:2013-06-10 14:29:13

标签: c# linq union

我知道我可以使用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;});

2 个答案:

答案 0 :(得分:3)

collection.SelectMany(i => i).Distinct(); //will get your result.

答案 1 :(得分:3)

O(n)中的以下方法,而不是使用Aggregate的方法,即O(n²)。

collection.SelectMany(i => i).Distinct()