如何将List <string>转换为Dictionary <int,string> </int,string> </string>

时间:2012-12-05 07:28:53

标签: c# .net linq dictionary

我有List<String>,我需要通过自动生成Key将其转换为Dictionary<int,String>,是否有最短的方法可以实现?我试过了:

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

但我认为这是肮脏的方式。

4 个答案:

答案 0 :(得分:50)

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

答案 1 :(得分:4)

使用:

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

答案 2 :(得分:4)

在我看来,你拥有的东西比Linq方式更具可读性(并且作为奖励,它恰好更有效率):

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

答案 3 :(得分:1)

我觉得这是最好的

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