计算IEnumerable集合的并集的最优雅和有效的方法

本文关键字:有效 方法 IEnumerable 集合 计算 | 更新日期: 2023-09-27 18:17:38

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

计算IEnumerable集合的并集的最优雅和有效的方法

在O(n)中使用以下方法,与使用O(n²)的Aggregate的方法相反。

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