假设我有任意数量的集合,每个集合都包含相同类型的对象(例如,List<int> foo
和List<int> bar
)。如果这些集合本身在一个集合中(例如,类型为List<List<int>>
,我可以使用SelectMany
将它们组合到一个集合中)。
但是,如果这些集合不在同一个集合中,我的印象是我必须编写一个这样的方法:
public static IEnumerable<T> Combine<T>(params ICollection<T>[] toCombine)
{
return toCombine.SelectMany(x => x);
}
然后我会这样调用它:
var combined = Combine(foo, bar);
有没有一种干净、优雅的方式来组合(任何数量的)集合,而不需要像上面的Combine
那样编写实用方法?这看起来很简单,在LINQ中应该有一种方法来做到这一点,但也许不是。
发布于 2010-12-21 04:59:43
发布于 2017-06-13 15:24:29
当你有一个集合的时候,比如一个List<List<T>>
,Enumerable.Aggregate
是一种更优雅的将所有列表组合成一个列表的方式:
var combined = lists.Aggregate((acc, list) => { return acc.Concat(list); });
发布于 2010-12-21 05:00:41
像这样使用Enumerable.Concat
:
var combined = foo.Concat(bar).Concat(baz)....;
https://stackoverflow.com/questions/4493858
复制相似问题