Reverse-Taste und Wert im Wörterbuch

8

Ich möchte die Schlüssel und Werte des Wörterbuchs umkehren. Aus dem Quellwörterverzeichnis Dictionary<int, string> möchte ich Dictionary<string, List<int>> erhalten. Es gibt List<int> , weil der Wert mehrere Male im Quellenwörterbuch unter verschiedenen Schlüsseln sein kann.

Beispiel:

%Vor%

würde umgewandelt in:

%Vor%

Danke für die Hilfe.

BEARBEITEN:

OK, mit Hilfe von euch konnte ich etwas über diesen Algorithmus verstehen. Jetzt sehe ich zwei mögliche Lösungen (unter anderem) und weiß nicht, was der wirkliche Unterschied zwischen ihnen ist, da das Ergebnis dasselbe zu sein scheint.

Gibt es Leistungsprobleme?

%Vor%

EDIT 2:

Am Ende habe ich nur

benutzt %Vor%

Ich hatte nicht erwartet, dass es so einfach wäre. Danke allen.

    
sidon 22.10.2013, 12:55
quelle

2 Antworten

23

Dies ist ein ziemlich einfacher LINQ-Ausdruck:

%Vor%

Zuerst gruppieren Sie nach dem Wert. Dadurch werden Gruppen mit Zeichenfolgen als Schlüssel und KeyValuePair<int,string> als Elemente erstellt.

Dann konvertieren Sie die Gruppen in ein Wörterbuch, indem Sie den Gruppenschlüssel für den Wörterbuchschlüssel verwenden und die Schlüssel des ursprünglichen Wörterbuchs in eine Liste mit ToList() "abflachen".

    
dasblinkenlight 22.10.2013, 12:58
quelle
3

Sie können das gewünschte Ergebnis auch wie folgt erhalten:

%Vor%

Dies ergibt das gleiche Ergebnis wie dasblinkenlight , verschiebt aber die Zuordnung von KeyValuePair in die group by-Klausel

    
Patrick McDonald 22.10.2013 13:11
quelle

Tags und Links