计算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;});
在O(n)中使用以下方法,与使用O(n²)的Aggregate
的方法相反。
collection.SelectMany(i => i).Distinct()
collection.SelectMany(i => i).Distinct(); //will get your result.