MultiDictionary 01.07.2014, 00:00 Uhr

Wenn in einem Dictionary die Werte wieder Listen sind

Ein experimenteller Datentyp von Microsoft speichert Listen als Werte in einer assoziativen Liste.
Ein Dictionary unter .NET ist eine Struktur, die zu einem Schlüssel einen Wert speichert. Beispielsweise zu "Obst" den Wert "Apfel".
Dictionary food = new Dictionary(); food.Add("Obst", "Apfel");
food enthält jetzt den Wert Apfel, der über den Schlüssel Obst abgerufen werden kann.
Nun ist Obst aber ein Sammelbegriff für Früchte. Es sollten sich also auch Birnen, Clementinen, Datteln etc. hinzufügen lassen. Das geht, wenn man folgendes schreibt:
Dictionary> food = new Dictionary>(); food.Add("Obst", new List(){"Apfel", "Birne", "Clementine", "Dattel"});
Jetzt enthält food unter dem Schlüssel Obst eine Liste.
Alles gut? Nein, ist es nicht. Denn jetzt muss man viel Code außen herum schreiben, der dafür sorgt, dass die Listen erzeugt werden oder überprüft, ob sie schon erzeugt wurden.
Hier kommt das MultiDictionary ins Spiel. Dieser Typ findet sich in einer Sammlung von experimentellen Typen, die Microsoft über NuGet zur Verfügung stellt. https://www.nuget.org/packages/Microsoft.Experimental.Collections/.
Damit lässt sich das Obst-Problem ganz einfach lösen:
MultiDictionary food = new MultiDictionary(); food.AddRange("Obst", new string[] { "Apfel", "Birne", "Clementine", "Dattel" }); food.AddRange("Gemüse", new string[] { "Lauch", "Wirsing", "Kohl" }); food.Remove("Obst");
Das sieht zwar nicht viel anders aus, als das Dictionary mit den Listen, bringt aber Vorteile mit. Zum Beispiel ist es wesentlich einfacher, ein Schlüssel-Wert-Paar hinzuzufügen.
food.Add("Obst", "Erdbeere");
Oder Sie wollen mehrere Werte hinzufügen. Dann geht das so:
food.AddRange("Obst", new string[] { "Banane", "Orange" });
Es gibt noch weitere Vorteile, die in dem Blogpost aufgelistet sind. [tib]



Das könnte Sie auch interessieren