我想採用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