【问题标题】:How to join together all the elements in an IEnumerable of IEnumerables?如何将 IEnumerable 的 IEnumerable 中的所有元素连接在一起?
【发布时间】:2012-08-14 18:03:18
【问题描述】:

如果您想知道这是怎么产生的,我正在使用来自 Entity Framework 的一些结果集。

我有一个对象是IEnumerable<IEnumerable<string>>;基本上,一个字符串列表的列表。

我想将所有字符串列表合并成一个大字符串列表。

在 C#.net 中执行此操作的最佳方法是什么?

【问题讨论】:

标签: c# .net linq ienumerable


【解决方案1】:

使用 LINQ SelectMany 方法:

IEnumerable<IEnumerable<string>> myOuterList = // some IEnumerable<IEnumerable<string>>...
IEnumerable<String> allMyStrings = myOuterList.SelectMany(sl => sl);

要非常清楚这里发生了什么(因为我讨厌人们认为这是某种巫术,我为其他人删除相同的答案而感到难过):

SelectManyIEnumerable&lt;T&gt; 上的extension method(通过语法糖看起来像特定类型的实例方法的静态方法)。它需要您的原始枚举枚举和一个将其中的每个项目转换为枚举的函数。

因为项目已经枚举,所以转换函数很简单——只需返回输入(sl =&gt; sl 的意思是“获取一个名为 sl 的参数并返回它”)。 SelectMany 然后依次提供对其中每一个的枚举,从而产生您的“扁平化”列表..

【讨论】:

  • 谢谢。这就是我一直在寻找的。​​span>
【解决方案2】:

使用Concat 方法:

firstEnumerable.Concat(secondEnumerable)

使用SelectMany 将强制对您不需要的两个枚举的每个元素进行额外评估。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多