如何把它转换成字典的字典

本文关键字:字典 转换 | 更新日期: 2023-09-27 18:07:20

如何将其更改为:Dictionary<string, Dictionary<DateTime, double>>

var data = segGroups.Join(pPeriods, s => s.segid, p => p.entid, (s, p) => new
            {
                Name = s.SegCode, // string
                Time = p.StartLocal, // datetime
                TR = p.Volume // double
            })
            .GroupBy(s => s.Name)
            .ToList();

字符串将是Name,内部字典将是DateTimeTR对。

如何把它转换成字典的字典

var dictionary = data.ToDictionary(group => group.Key, 
    group => group.ToDictionary(item => item.Time, item => item.TR));

注意这里没有强制转换。选角就是在不改变事物本来面目的情况下,将其视为其他事物。这是通过创建一个完全基于其他值的新对象将列表转换为字典。这是一个很重要的区别

你不必在ToDictionary之前调用ToList(),除非你真的在其他地方使用该列表:

var data = segGroups.Join(pPeriods, s => s.segid, p => p.entid, (s, p) => new
                    {
                        Name = s.SegCode, // string
                        Time = p.StartLocal, // datetime
                        TR = p.Volume // double
                    })
                    .GroupBy(s => s.Name)
                    .ToDictionary(g => g.Key, g => g.ToDictionary(i => i.Time, i => i.TR));

data将被输入到Dictionary<string, Dictionary<DateTime, double>>中。

您还必须确保每个组中的Time是唯一的。否则,ArgumentException将被抛出,因为Dictionary中的两个条目不能具有相同的Key