2012-12-05 20 views
12

Ho List<String>, ho bisogno di convertirlo in Dictionary<int,String> con la generazione automatica di chiave, è un modo più semplice per farlo? Ho provato:Come convertire l'elenco <String> nel dizionario <int,String>

var dictionary = new Dictionary<int, String>(); 
    int index = 0; 
    list.ForEach(x=>{ 
     definitions.Add(index, x); 
     index++; 
}); 

ma penso che sia il modo sporco.

risposta

35
var dict = list.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s); 
+2

maledizione sei veloce – Habib

3

Usa:

var dict = list.Select((x, i) => new {x, i}) 
    .ToDictionary(a => a.i, a => a.x); 
4

A mio parere, quello che hai è più leggibile rispetto al modo Linq (e come bonus, capita di essere più efficiente):

foreach(var item in list) 
    dictionary[index++] = item; 
1

Trovo che questo sia il più pulito

int index = 0; 
var dictionary = myList.ToDictionary(item => index++); 
Problemi correlati