首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >组合多个元素集合的优雅方式?

组合多个元素集合的优雅方式?
EN

Stack Overflow用户
提问于 2010-12-21 04:54:45
回答 9查看 110K关注 0票数 114

假设我有任意数量的集合,每个集合都包含相同类型的对象(例如,List<int> fooList<int> bar)。如果这些集合本身在一个集合中(例如,类型为List<List<int>>,我可以使用SelectMany将它们组合到一个集合中)。

但是,如果这些集合不在同一个集合中,我的印象是我必须编写一个这样的方法:

代码语言:javascript
复制
public static IEnumerable<T> Combine<T>(params ICollection<T>[] toCombine)
{
   return toCombine.SelectMany(x => x);
}

然后我会这样调用它:

代码语言:javascript
复制
var combined = Combine(foo, bar);

有没有一种干净、优雅的方式来组合(任何数量的)集合,而不需要像上面的Combine那样编写实用方法?这看起来很简单,在LINQ中应该有一种方法来做到这一点,但也许不是。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-12-21 04:59:43

我想你可能在找LINQ的.Concat()

代码语言:javascript
复制
var combined = foo.Concat(bar).Concat(foobar).Concat(...);

或者,.Union()将删除重复的元素。

票数 122
EN

Stack Overflow用户

发布于 2017-06-13 15:24:29

当你有一个集合的时候,比如一个List<List<T>>Enumerable.Aggregate是一种更优雅的将所有列表组合成一个列表的方式:

代码语言:javascript
复制
var combined = lists.Aggregate((acc, list) => { return acc.Concat(list); });
票数 33
EN

Stack Overflow用户

发布于 2010-12-21 05:00:41

像这样使用Enumerable.Concat

代码语言:javascript
复制
var combined = foo.Concat(bar).Concat(baz)....;
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4493858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档