Frage

Ich habe einen Lambda-Ausdruck, dass die Ergebnisse aus einem Wörterbuch wird.

var sortedDict = (from entry in dctMetrics 
                  orderby entry.Value descending 
                  select entry);

Der Ausdruck zieht die Paare zurück ich brauche, kann ich sie in dem Debug-Modus IDE sehen.

Wie konvertiere ich dies wieder ein Wörterbuch des gleichen Typs wie die Quelle? Ich weiß sortedDict des Telement ein KeyValuePair ist, aber ich habe Probleme vollständig das Verständnis der ToDictionary Syntax des Erweiterungsmethode. Ich habe auch versucht foreach'ing das var Ergebnis stückweise ein neues Wörterbuch konstruieren, aber ohne Erfolg.

Gibt es so etwas wie diese (Funktionalität weise):

var results = (from entry in dictionary 
               orderby entry.Value descending 
               select entry);
Dictionary<string,float> newDictionary = results as (Dictionary<string,float>);
War es hilfreich?

Lösung

Sie können es tun, wie folgt:

var newDictionary = results.ToDictionary(r => r.Key, r => r.Value);

lesen, dass als „für jedes Paar in Ergebnissen, fügen Sie das Element in das neue Wörterbuch, wo der Schlüssel wird als der Schlüssel des Paares erzeugt werden, und der Wert wird als der Wert des Paares erzeugt werden.“

Auch, nur auf der Grundlage Ihres Beispielcode - Sie sollten bedenken, dass ein Dictionary<T, U> als Hash-Tabelle implementiert wird, so dass es nicht um die Reihenfolge der Elemente beibehalten wird man hineinsteckt. Betrachten Sie mit einem SortedDictionary oder eine SortedList statt, wenn Sie eine geordnete Karte benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top