Я хочу взять List
и сгенерировать Dictionary
, который отображает каждый элемент в его индекс в List
. Я могу это сделать, как это так, для List<string>
:Создайте карту индексов элементов списка, используя Linq
var myList = new List<string>{ /* populate list */ };
var orderMap = new Dictionary<string, int>();
foreach (var element in myList)
{
orderMap[element] = myList.IndexOf(element);
}
В принципе, я хочу взять список, как:
Apple
Banana
Orange
и вернуть карту, показывающую индексы:
Apple -> 0
Banana -> 1
Orange -> 2
Как могу ли я сделать это с Linq? Я думаю, что-то вроде этого должно работать:
orderMap = myList.Select(x => /* return a key value pair mapping x to myList.IndexOf(x) */);
Но я не могу понять правильный синтаксис для него. Кроме того, можете ли вы обратиться к самому списку в делегате, который используется для Select
?
Ick, побочные эффекты в селекторе? Нет спасибо :) Я понимаю, что в этом случае он использует немедленную оценку и * будет * работать, но это все равно то, чего я лично избегу. –
Это выбирает индекс как ключ, но OP хочет, чтобы строка была ключевой. –
@JonSkeet Я знаю, что это не самое чистое решение. Я всегда забываю, что полезная перегрузка 'Select' :) @ L.B Спасибо, исправлено это. неверный вопрос. – Botz3000