我有一个期望作为参数接收类型的函数 IDictionary(String,IDictionary(String,String))。
我想使用Linq构建我的词典:
Dim dic = myCol.ToDictionary(Function(x) x.Key1,
Function(x) x.children.ToDictionary(Function(x2) x2.Key2,
Function(x2) x2.name)
但是当我向MyFunc发送dic时,我收到错误:
Unable to cast object of type System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.Dictionary`2[System.String,System.String]]' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Collections.Generic.IDictionary`2[System.String,System.String]]
据我了解,这是因为IDictionary(of String, IDictionary of String, String))
没有实现IDictionary(of String, Dictionary(of String, String))
(正如his post中@penartur所解释的那样)。
话虽如此,我怎样才能使用Linq实现这一目标?
谢谢。
答案 0 :(得分:1)
这是未经测试的,但您可以尝试:
Dim dic = myCol.ToDictionary(
Function(x) x.Key1,
Function(x) DirectCast(
x.children.ToDictionary(Function(x2) x2.Key2,
Function(x2) x2.name),
IDictionary(Of String, String)))