c# - 如何将 IEnumerables 的 IEnumerable 中的所有元素连接在一起?

标签 c# .net linq ienumerable

以防万一你想知道这是怎么发生的,我正在处理来自 Entity Framework 的一些结果集。

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

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

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

最佳答案

使用 LINQ SelectMany 方法:

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

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

SelectMany是一个 extension method (通过语法糖看起来像特定类型的实例方法的静态方法)IEnumerable<T> .它采用您的原始枚举枚举和一个将每个项目转换为枚举的函数。

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

关于c# - 如何将 IEnumerables 的 IEnumerable 中的所有元素连接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958116/

相关文章:

c# - 如何在没有 pdb 的情况下在堆栈跟踪中包含行号?

.net - 从 .NET 调用 COM,它是适配器模式的一个例子吗?

c# - 如何使用可能的空列表处理此 LINQ 代码中的空值?

c# OrderBy 字符串层次结构 xx.xx.xx

.net - 访问 DbSet 时的 Effort (EF6) 异常(字​​典中不存在给定的键)

c# - 如何在Docker中运行32位.NET Core应用程序

c# - 插入符未显示在文本框中

c# - 如何使用最小起订量模拟 Controller 上下文

c# - 为什么派生类无法从基类访问 protected getter?

.net - 使用 jQuery 从纯 HTML 站点调用 .net Web 服务