首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换从List<Dictionary<DateTime,Points[]>>到Dictionary<DateTime,Points[]>

转换从List<Dictionary<DateTime,Points[]>>到Dictionary<DateTime,Points[]>
EN

Stack Overflow用户
提问于 2019-11-07 08:50:01
回答 1查看 119关注 0票数 2

我从任务中生成了List<Dictionary<DateTime, Points[]>> taskResult

代码语言:javascript
复制
var taskResult = tasks.Select(t => t.Result).ToList();
var data = new Dictionary<DateTime, Points[]>();

在我的函数中,我想返回Dictionary<DateTime, Points[]> data,但是我想不出怎么做。我试着用foreach,但没有运气。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 08:56:36

Enumerable.SelectMany扩展方法是作业的正确工具,它将多个集合组合成一个集合。字典是键值对的集合.

代码语言:javascript
复制
var combined = dictionaries
    .SelectMany(dictionary => dictionary.Select(pair => pair))
    .GroupBy(pair => pair.Key)
    .ToDictionary(
        group => group.Key, 
        group => group.SelectMany(pair => pair.Value).ToArray());

如果原始字典包含重复的日期,上述方法将合并相同日期的点。

因为Dictionary实现了IEnumerable,所以可以在SelectMany的第一次调用中删除.Select

.GroupBy的替代方法是.ToLookup方法,它可以在每个键中有多个值。

代码语言:javascript
复制
var combined = dictionaries
    .SelectMany(dictionary => dictionary)
    .ToLookup(pair => pair.Key, pair.Value)
    .ToDictionary(
        lookup => lookup.Key, 
        lookup => lookup.SelectMany(points => points).ToArray());
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58745002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档