2009-06-24 6 views
121

Weiß jemand, ob es einen Weg gibt, kann ich Werte in ein C# Wörterbuch einfügen, wenn ich es erstelle? Ich kann, aber nicht wollen, zu tun dict.Add(int, "string") für jedes Element, wenn es etwas effizienter wie ist:Wie Einfügen von Werten in C# Dictionary bei Instanziierung?

Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")}; 
+1

möglich Duplikat [Kann ich eine Auflistungsinitialisierer für Wörterbuch verwenden Einträge?] (Http://stackoverflow.com/questions/495038/cani-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) –

Antwort

152

Es gibt ganze Seite über, wie man das hier:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

Beispiel:

im folgenden Code beispielsweise ein Dictionary<TKey, TValue> mit Instanzen des Typs initialisiert StudentName:

var students = new Dictionary<int, StudentName>() 
{ 
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}}, 
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}}, 
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}} 
}; 
+0

Entschuldigung, ich habe die falschen Suchbegriffe verwendet bei Google anscheinend. Dieser Link ist großartig. – kd7iwp

+3

Dies funktioniert nur auf .NET 3.5 Compiler, aber ... behalte das im Hinterkopf. –

+0

@ kd7iwp - kein Problem, ein Teil der Funktion dieser Website ist so, dass alternative Suchbegriffe zu etwas nützlichem weitergeleitet werden können. –

44
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
    { 0, "string" }, 
    { 1, "string2" }, 
    { 2, "string3" } }; 
6

Sie ein Wörterbuch instanziiert und Gegenstände in sie wie folgt hinzu:

var dictionary = new Dictionary<int, string> 
    { 
     {0, "string"}, 
     {1, "string2"}, 
     {2, "string3"} 
    }; 
11

Sie es fast geschafft wurden:

var dict = new Dictionary<int, string>() 
{ {0, "string"}, {1,"string2"},{2,"string3"}}; 
8

Sie auch verwenden können Lambda-Ausdrücke, um beliebige Schlüsselwertpaare von anderen IEnumerable-Objekten einzufügen. Schlüssel und Wert kann jeder beliebige Typ sein.

Dictionary<int, string> newDictionary = 
       SomeList.ToDictionary(k => k.ID, v => v.Name); 

ich, dass viel einfacher finden, da Sie die IEnumerable Objekte überall in .NET verwenden

Hoffnung, die hilft !!!

Tad.

0

Ich hoffe, es wird perfekt funktionieren.

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);

+0

Hallo, willkommen in SO! Die Person, die diese Frage ursprünglich gestellt hat, sagte ausdrücklich, dass sie nicht die '.Add (int," string ") Methode zum Hinzufügen von Werten zu einem Wörterbuch verwenden möchte. Tut mir leid, aber das beantwortet die Frage nicht. – Kezz101

+0

Ja, Sie haben Recht Kezz101. Mein Fehler. –

4

Nur damit Sie C# 6 wissen, wie von können Sie diese nun initialisieren als

var students = new Dictionary<int, StudentName>() 
{ 
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}, 
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}, 
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198} 
}; 

Viel sauberer folgt :)

Verwandte Themen