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.
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".
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
Tags und Links c# linq dictionary