Der folgende Quellcode-Ausschnitt zeigt beispielhaft, wie es funktioniert:
Private Function GetKeyOfGreatestOrSmallestKeyValuePair(ByVal indicator As String) As String
Dim ListOfKeyValuePairs As New Dictionary(Of String, Double)
With ListOfKeyValuePairs
.Add("Key 1", 20.35)
.Add("Key 2", 10.25)
.Add("Key 3", 45.95)
.Add("Key 4", 900.22)
.Add("Key 5", 1.07)
End With
Dim listedItems As IOrderedEnumerable(
Of KeyValuePair(Of String, Double)) = ListOfKeyValuePairs.OrderBy(Function(v) v.Value)
Select Case indicator
Case Is = "Greatest"
Return listedItems.Last.Key.ToString
Case Is = "Smallest"
Return listedItems.First.Key.ToString
End Select
End Function
Die Function "GetKeyOfGreatestOrSmallestKeyValuePair" gibt, je nach dem welcher Parameter übergeben wird, entweder den Schlüssel des größten oder den Schlüssel des kleinsten aller Werte eines Dictionary mit Schlüssel- und Wert-Paaren zurück. Das Dictionary wird mit der Variablen "ListOfKeyValuePairs" erzeugt. Dann wird eine weitere Variable erzeugt. Das ist die Variable "listedItems" vom Typ "IOrderedEnumerable(Of KeyValuePair(Of String, Double))". Dieser Variablen wird die Auswertung der Methode "OrderBy()" übergeben, die auf das Dictionary angewendet wird. Der Clou besteht darin, dass der Methode "OrderBy()" eine Lambda-Funktion übergeben wird, die die Werte jedes Schlüssel-/Wert-Paares zurückgibt. Die Methode "OrderBy()" sortiert die von der Lambda-Funktion übergebenen Werte in aufsteigender Reihenfolge. Im Ergebnis enthält die Variable "listedItems" eine neue Auflistung vom Typ "IOrderedEnumerable(Of KeyValuePair(Of String, Double)), deren Schlüssel-/Wert-Paare in aufsteigender Reihenfolge sortiert sind. Diese sortierte Auflistung kann dann ausgewertet werden.
Anstatt der Methode "OrderBy()" kann man z.B. auch die Methode "OrderByDescending()" anwenden. Als Ergebnis erhält man dann ein neues Dictionary, das in absteigender Reihenfolge sortiert ist.
Die Methoden "OrderBy()" und "OrderByDescending()" zählen zu den sogenannten Erweiterungsmethoden der "Dictionary(Of TKey, TValue)"-Klasse. Es gibt eine Vielzahl weiterer Erweiterungsmethoden, die auf ein Dictionary angewendet werden können. Mit deren Hilfe sind weitere, umfangreiche Abfrage- und Filter-Aktionen möglich.
Keine Kommentare:
Kommentar veröffentlichen