C#遍历List<IDictionary<string,object>>实现无显式ToDictionary的动态合并方案
C# 多字典动态合并迭代实现
你需要的无显式ToDictionary的动态可迭代对象可以通过GroupBy加投影直接实现,属于延迟计算模式,只有遍历触发时才会执行合并逻辑,支持任意数量的输入字典:
var iterator = my_datasets .SelectMany(dict => dict) .GroupBy(pair => pair.Key) .Select(g => (Key: g.Key, Values: g.Select(p => p.Value).ToList()));
- 无显式全量合并字典构造:全程没有调用
ToDictionary生成完整的合并字典对象,避免了提前占用大量内存存储中间结果,适合大体积数据集处理场景 - 支持N个输入字典:无需适配输入字典的数量,兼容任意长度的
List<IDictionary<string,object>>输入 - 完全匹配你需要的遍历写法:
foreach ((string key, List<object> values) in iterator) { // 直接执行业务逻辑,例如基于values.Distinct()的处理 }
如果需要更极致的延迟效果,不需要提前将同Key的值转为List,可以去掉ToList()调用,进一步降低内存开销:
// 极致延迟版本,无任何中间集合生成 var iterator = my_datasets .SelectMany(dict => dict) .GroupBy(pair => pair.Key) .Select(g => (Key: g.Key, Values: g.Select(p => p.Value))); // 对应遍历写法 foreach ((string key, IEnumerable<object> values) in iterator) { // 执行业务逻辑 }
内容的提问来源于stack exchange,提问作者malat
相关产品推荐
相关产品推荐

