gpt4 book ai didi

c# - 使用 Linq 生成列表元素索引的映射

转载 作者:太空狗 更新时间:2023-10-30 00:11:18 26 4
gpt4 key购买 nike

我想拍一个List ,并生成一个 Dictionary它将每个元素映射到其在 List 中的索引.我可以这样做,对于 List<string> :

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

并返回显示索引的 map :

Apple -> 0
Banana -> 1
Orange -> 2

如何使用 Linq 执行此操作?我认为这样的事情应该可行:

orderMap = myList.Select( x => /* return a key value pair mapping x to myList.IndexOf(x) */ );

但我想不出正确的语法。此外,您能否在用于 Select 的委托(delegate)中引用列表本身? ?

最佳答案

虽然您可以在委托(delegate)中引用列表,但这通常不是一个好主意。您真的想使用提供索引和值的 Select 的重载:

var dictionary = list.Select((value, index) => new { value, index })
.ToDictionary(p => p.value, p => p.index);

请注意,如果您有任何重复元素,这将引发异常。

关于c# - 使用 Linq 生成列表元素索引的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13834993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com