【发布时间】:2017-04-04 11:18:56
【问题描述】:
我想声明一个 vb.net 字典,其中一个整数作为键,一个匿名对象作为值。这由每个循环的并行填充。匿名类的属性总是相同的。但是有没有办法用匿名对象的签名来声明字典呢?
现在,我正在使用整数和对象的字典。
Dim MyDict As New Dictionary(Of String, Dictionary(Of Integer, Object))(12)
'In my loop
Dim MyLinqDict = Something.GroupBy(…).ToDictionary(Function(x) x.Kex, Function(x) New With {.a = 1, .b = 2})
MyDict.Add(MyKey, MyLinqDict)
现在,显而易见的问题是,内部字典的内容只是一个对象。我不知道,如果,如果是,我怎么能用实际的对象声明那个内部字典。我也不知道是否可以将该“对象”类型转换为匿名类型。
Dim MyContent = DirectCast(MyDict("Some key")(1), ???).a
有人可以在这方面帮助我吗?
【问题讨论】:
-
你不能同时拥有它。匿名与否。如果您需要能够转换并明确访问属性
a,那么您需要定义它而不是使用对象。如果你希望它匿名,你必须相信你不会得到任何没有a的对象 -
匿名类型是 Linq 的一种便利。当您必须这样做时,它们不再方便。所以不要这样做,声明一个小助手类来存储结果。现在很简单。
标签: vb.net dictionary anonymous-types