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

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

var taskResult = tasks.Select(t => t.Result).ToList();
var data = new Dictionary<DateTime,Points[]>();

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

G549547852 回答:从List <Dictionary <DateTime,Points [] >>转换为Dictionary <DateTime,Points []>

Enumerable.SelectMany扩展方法是适合该工作的工具,它将许多集合组合为一个。字典是键值对的集合。

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,因此您可以在第一次调用.Select时删除SelectMany
.GroupBy的替代方法是.ToLookup方法,每个键可以有多个值。

var combined = dictionaries
    .SelectMany(dictionary => dictionary)
    .ToLookup(pair => pair.Key,pair.Value)
    .ToDictionary(
        lookup => lookup.Key,lookup => lookup.SelectMany(points => points).ToArray());
本文链接:https://www.f2er.com/3146396.html

大家都在问