c# - 组合多个元素集合的优雅方式?

标签 c# linq generics collections

假设我有任意数量的集合,每个集合包含相同类型的对象(例如,List<int> fooList<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/

相关文章:

sql-server - 在 Visual Studio 中使用 Linq 查询链接服务器

java - 混淆 Java 泛型错误与 Map 和 Collector

c# - 如何在启动时将表单加载更改为其他表单?

c# - 绘制具有颜色渐变的矩阵 "Spectrogram"

c# - SDK 路径在 Notepad++ plugin.net 中为空

c# - Entity Framework Code First - 获取具有特定标签的博客文章

c# - Sharepoint 2010 以编程方式启动工作流错误

c# - 按月将一个列表拆分为多个 - C#、Linq

java - 如何返回我明确作为参数传递的类型?

generics - 如何创建基于泛型类型返回对象的泛型 Scala 函数?