Как преобразовать List <String> в словарь <int, String>

У меня есть List<String>, мне нужно преобразовать его в Dictionary<int,String> с автоматической генерацией ключа, это самый короткий способ для этого? Я пробовал:

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

но я думаю, что это грязный путь.

Ответ 1

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

Ответ 2

На мой взгляд, то, что у вас есть, более читаемо, чем способ Linq (и в качестве бонуса это бывает более эффективно):

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

Ответ 3

Использование:

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