使用Linq获取IDictionary(String,IDictionary(String,String))

时间:2017-11-23 22:09:15

标签: .net vb.net linq

我有一个期望作为参数接收类型的函数 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实现这一目标?

谢谢。

1 个答案:

答案 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)))