Я создал класс Dictionary (например, MyDictionary). В настоящее время я пытаюсь передать MyDictionary в функцию, отфильтровать его в новый экземпляр MyDictionary и передать этот новый экземпляр в другой метод.
Когда я пытаюсь создать второй экземпляр из фильтрованного первого экземпляра MyDictionary через лямбда-выражения и метод ToDictionary, я получаю следующую ошибку:
Невозможно привести объект типа 'System.Collections.Generic.Dictionary`2 [System.Int32, System.String]' к типу "MyDictionary".
Я упростил пример и заново создал его в LINQPad, и получаю ту же ошибку.
Вот упрощенная версия моего кода:
Sub Main
Dim di1 As New MyDictionary
di1(1) = "One"
di1(2) = "Two"
di1(3) = "Three"
di1(4) = "Four"
Dim di2 As MyDictionary= _
CType(di1.Where(Function(w) w.Value.Contains("T")) _
.ToDictionary(Function(tdk) tdk.Key, Function(tdv) tdv.Value), MyDictionary)
End Sub
Public Class MyDictionary
Inherits Dictionary(Of Integer, String)
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal dictionary As IDictionary(Of Integer, String))
MyBase.New(dictionary)
End Sub
End Class
Спасибо заранее,
-Aaron
За сообщение Бреннена:
Я могу сделать следующее, и это нормально, я просто надеялся не делать это таким образом.
Sub Main
Dim di1 As New MyDictionary
di1(1) = "One"
di1(2) = "Two"
di1(3) = "Three"
di1(4) = "Four"
Dim di2 = _
di1.Where(Function(w) w.Value.Contains("T")) _
.ToDictionary(Function(tdk) tdk.Key, Function(tdv) tdv.Value)
Dim di3 As New MyDictionary(di2)
End Sub
Public Class MyDictionary
Inherits Dictionary(Of Integer, String)
Public Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal dictionary As IDictionary(Of Integer, String))
MyBase.New(dictionary)
End Sub
End Class
У кого-нибудь еще есть мысли о том, как можно пропустить третий экземпляр MyDictionary?