2012-12-05 19 views
12

में कनवर्ट करने के लिए कैसे करें List<String>, मुझे इसे Dictionary<int,String> में ऑटो पीढ़ी की कुंजी के साथ परिवर्तित करने की आवश्यकता है, इसे पूरा करने का कोई सबसे छोटा तरीका है? मैंने कोशिश की है:सूची <String> को शब्दकोश <int,String>

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

लेकिन मुझे लगता है कि यह गंदा तरीका है।

उत्तर

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

लानत आप तेजी से कर रहे हैं होने के लिए लगता है – Habib

3

उपयोग:

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

मेरी राय में, आप Linq तरह से अधिक से अधिक पठनीय है क्या है (और एक बोनस के रूप में, यह अधिक कुशल होने का होता है):

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

मैं इस neatest

int index = 0; 
var dictionary = myList.ToDictionary(item => index++); 
संबंधित मुद्दे