25

我有List<String>,我需要将其转换为Dictionary<int,String>自动生成密钥,有什么最短的方法可以做到这一点吗?我试过了:

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

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

4

4 回答 4

74
var dict = list.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s);
于 2012-12-05T07:30:54.640 回答
17

我觉得这是最整洁的

int index = 0;
var dictionary = myList.ToDictionary(item => index++);
于 2018-03-01T18:23:56.323 回答
6

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

foreach(var item in list)
    dictionary[index++] = item;
于 2012-12-05T08:48:45.590 回答
4

采用:

var dict = list.Select((x, i) => new {x, i})
    .ToDictionary(a => a.i, a => a.x);
于 2012-12-05T07:31:24.717 回答