2009-06-24 10 views
121

Qualcuno sa se c'è un modo in cui posso inserire valori in un dizionario C# quando lo creo? Posso, ma non vogliono, fare dict.Add(int, "string") per ogni voce, se c'è qualcosa di più efficiente simile:Come inserire valori nel dizionario C# sull'istanza?

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

possibile duplicato del [Posso utilizzare un inizializzatore collezione per Dictionary voci?] (Http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) –

risposta

152

C'è un'intera pagina su come farlo qui:

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

esempio:

Nel seguente esempio di codice, un Dictionary<TKey, TValue> viene inizializzato con istanze di tipo 01.235.:

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

Spiacente, ho usato i termini di ricerca errati su Google apparentemente. Questo link è fantastico. – kd7iwp

+3

Questo funziona solo su compilatore .NET 3.5, ma ... tienilo a mente. –

+0

@ kd7iwp - nessun problema, parte della funzione di questo sito è che i termini di ricerca alternativi possono essere indirizzati a qualcosa di utile. –

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

È possibile creare un'istanza di un dizionario e aggiungere elementi in questo modo:

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

eri quasi arrivato:

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

è anche possibile utilizzare Espressioni Lambda per inserire coppie di valori chiave da qualsiasi altro oggetto IEnumerable. Chiave e valore possono essere qualsiasi tipo tu voglia.

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

Trovo che molto più semplice in quanto si utilizzano gli oggetti IEnumerable ovunque in .NET

Speranza che aiuta !!!

Tad.

0

Spero che funzioni perfettamente.

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

+0

Ciao, benvenuto in SO! La persona che inizialmente ha posto questa domanda ha detto esplicitamente che non vogliono eseguire il metodo '.Add (int," string ")' per aggiungere valori ad un dizionario. Scusa ma questo non risponde alla domanda. – Kezz101

+0

Sì, hai ragione Kezz101. Errore mio. –

4

Solo così si sa come di C# 6 ora è possibile inizializzare le seguenti

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} 
}; 

Molto più pulito :)

Problemi correlati