c# - LINQ 将多个 IEnumerables 聚合为一个?

标签 c# linq

我有一个定义为 <int, IEnumerable<char>> 的字典.假设数据填充如下:

1, a b c d e
2, f g h i j
3, k l m n o

如果我有一个由 1 和 3 组成的 IEnumerable,LINQ 会返回什么 'a b c d e k l m n o' (假设空格代表一次迭代)。

最佳答案

SelectMany 确实是你想要的,但恕我直言,使用理解语法并让它为你做映射更具可读性,所以像这样:

var dict = ... // dictionary
var keys = ... // enumerable with 1 and 3 in it
var result = from key in keys
             from val in dict[key]
             select val;

如果/根据需要,也更容易(同样,恕我直言)在其中添加“orderby”。

当然,如果您发现扩展方法版本更易于阅读/解析,那么一定要改用它。 :)

关于c# - LINQ 将多个 IEnumerables 聚合为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535863/

相关文章:

c# - 如何避免在 asp.net 中单击按钮事件后页面刷新

c# - 如何在 WPF 中绑定(bind) Observable 集合的总和

c# - 删除自定义 IComparable 类中的重复项

选择中的 Linq toEntity 自定义函数

c# - linq中的'orderby'使用字符串数组c#

c# - 从输入中转义的 SQL 特殊字符

c# - LINQ:在 5 分钟内按日期范围分组

c# - 当另一个类只知道父类(super class)时,如何访问子类?

c# - linq2sql 如何跟踪数据库对象?

c# - Entity Framework 中实体的内部访问使得查询崩溃时的简单 linq