2017-11-03 1 views
1
Dim dict1 = fileToDict(PriceList) 
    Dim dict2 = dict1.ToDictionary(Function(y) Val(y)) 

Grundsätzlich mache ich dict (von String, String) zu dict (von String, double).Welche Überladung von Wörterbuch verwende ich, wenn ich das tue?

Meine Frage ist, ich sehe keine Überladung von toDictionary, die eine einzige Funktion von Sachen nimmt.

Hinweis: Das richtige Format ist eigentlich

Dim dict2 = dict1.ToDictionary(Function(x) x.Key, Function(y) Val(y.Value)) 

Alle von dem überladenen Operator nimmt 1 Funktion, die eine KeyValuePair als Argument verwendet.

Irgendwie funktioniert die, die funktioniert 2 Funktion. Da bin ich verwirrt.

Antwort

1

Sie müssen einen Selektor für die Schlüssel und die Werte angeben. Es gibt keine Überladung, die einfach die Schlüssel vom ursprünglichen Dictionary nimmt. Denken Sie daran, dass ToDictionary tatsächlich auf eine IEnumerable(Of T) aufgerufen wird, so dass es keine Ahnung hat, dass die Quelle eine Dictionary ist. Es weiß nur, dass es ein IEnumerable(Of KeyValuePair(Of String, String)) ist. Sie müssen ihm sagen, wie Sie die Schlüssel für die neue Dictionary von den Artikeln in der IEnumerable(Of T) Quelle erhalten.

z.

+0

Wenn jemand einen legitimen Grund hat, diese Antwort abzustimmen, würde mich interessieren, was es ist, damit ich meinen Fehler korrigieren kann. Wenn Sie nur jemand mit einer Axt zum Schleifen sind, hoffe ich, dass Sie Ihren kleinen Powertrip genossen haben. – jmcilhinney

+0

Scheint wie eine Axt zu schleifen .. Das beantwortet perfekt die Frage mit einer guten Erklärung, warum. –

+0

Ich habe es hochgestuft. Eigentlich möchte ich nur wissen, welche Überladung verwendet wird. Es scheint, dass eine der Überbelastungen der Todiktinie 2 Funktionen anstelle von 1 akzeptiert. –

Verwandte Themen