假设我有任意数量的集合,每个集合包含相同类型的对象(例如,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 中执行此操作,但也许没有。
最佳答案
我认为您可能正在寻找 LINQ 的 .Concat()
?
var combined = foo.Concat(bar).Concat(foobar).Concat(...);
或者,.Union()
将删除重复元素。
关于c# - 组合多个元素集合的优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493858/