【发布时间】:2015-05-08 20:52:06
【问题描述】:
我似乎找不到解决办法,而且错误信息也不是很有帮助。
我有一个数据表:
iGuid、iDateTime、iDecimal
我想创建一个字典词典,这样......
iGuid -> iDateTime -> iDecimal.
例如。
Guid1, Monday, 4
Guid1, Tuesday, 4
Guid1, Friday, 1
Guid2, Monday, 1
Guid2, Tuesday, 1
现在我想把它做成一个字典,键为iGuid,值另一个字典,键为iDateTime,值为iDecimal。
我现在的代码是:
Dictionary<Guid, Dictionary<DateTime, decimal>> val = iDataTable.OfType<CustomDataRow>().GroupBy(r => new { r.iGuid } )
.ToDictionary<Guid, Dictionary<DateTime, decimal>>( row => row.Key.iGuid,
child => child.ToDictionary<DateTime, decimal>(subKey => subKey.iDateTime, subVal => subVal.iDecimal));
我必须返回这个类型,因为我需要在其他函数中使用它(如果我在它前面抛出一个 var 就可以了)。
【问题讨论】:
-
可能不相关,但您的最后陈述没有意义。如果你使用
var,它仍然是强类型的。您所看到的是您的表达式可以编译,而不是您想要/期望的类型。 -
当你使用
var时,编译器给你的是什么类型?您可以将鼠标悬停在var上并查看类型。 -
请发布错误信息
-
错误信息:CustomDataRow 不包含 ToDictionary 的定义。
-
对于其他的cmets,它们是匿名类型(但是里面有正确的类型,这就是我困惑的原因)
标签: c# linq dictionary