Ответ 1
Вы можете использовать перегрузку Select
, которая включает индекс:
var dictionary = array.Select((value, index) => new { value, index })
.ToDictionary(pair => pair.value, pair => pair.index);
Или используйте Enumerable.Range
:
var dictionary = Enumerable.Range(0, array.Length).ToDictionary(x => array[x]);
Обратите внимание, что ToDictionary
выдаст исключение, если вы попытаетесь предоставить два равных ключа. Вы должны тщательно подумать о возможности того, что ваш массив имеет в себе два равных значения и что вы хотите в этой ситуации.
У меня возникнет соблазн просто сделать это вручную:
var dictionary = new Dictionary<string, int>();
for (int i = 0; i < array.Length; i++)
{
dictionary[array[i]] = i;
}