Ответ 1
var dict = list.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s);
У меня есть List<String>
, мне нужно преобразовать его в Dictionary<int,String>
с автоматической генерацией ключа, это самый короткий способ для этого? Я пробовал:
var dictionary = new Dictionary<int, String>();
int index = 0;
list.ForEach(x=>{
definitions.Add(index, x);
index++;
});
но я думаю, что это грязный путь.
var dict = list.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s);
На мой взгляд, то, что у вас есть, более читаемо, чем способ Linq (и в качестве бонуса это бывает более эффективно):
foreach(var item in list)
dictionary[index++] = item;
Использование:
var dict = list.Select((x, i) => new {x, i})
.ToDictionary(a => a.i, a => a.x);