C# 如何将其转换为字典的字典
如何将其更改为:C# 如何将其转换为字典的字典,c#,linq,dictionary,lambda,group-by,C#,Linq,Dictionary,Lambda,Group By,如何将其更改为:Dictionary 字符串将是名称,内部字典将是日期时间和TR对 var dictionary = data.ToDictionary(group => group.Key, group => group.ToDictionary(item => item.Time, item => item.TR)); 请注意,这里没有进行铸造。铸造是将某事物视为另一事物,而不改变它的真实面目。这是通过创建一个完全基于其他值的全新对象,将列表转换为字典。这
Dictionary
字符串将是名称
,内部字典将是日期时间
和TR
对
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));
数据
将被键入字典
您还必须确保每个组中的时间是唯一的<否则将抛出code>ArgumentException,因为
Dictionary
中的两个项不能具有相同的键
谢谢您的回答,i.TR必须是i=>i.TR
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));