找到一个键的索引?字典.NET
我需要做currentKey+1。所以我想找到键值的索引,然后得到下一个键(如果在末尾,则是第一个键)。如何找到键的当前索引找到一个键的索引?字典.NET,.net,linq,.net,Linq,我需要做currentKey+1。所以我想找到键值的索引,然后得到下一个键(如果在末尾,则是第一个键)。如何找到键的当前索引 我正在使用词典并查找。使用Linq查找或索引无效。词典没有排序,因此键实际上没有任何索引。请看我的问题: 使用具有 编辑:“我不确定我是否理解你想要什么。如果你想遍历字典,只需使用 foreach(KeyValuePair kvp in yourDict) 如果键是Int,并且您想要下一个,请使用 var newkey = oldkey+1; if(yourdict.C
我正在使用
词典
并查找。使用Linq查找或索引无效。词典没有排序,因此键实际上没有任何索引。请看我的问题:
使用具有
编辑:“我不确定我是否理解你想要什么。如果你想遍历字典,只需使用
foreach(KeyValuePair kvp in yourDict)
如果键是Int,并且您想要下一个,请使用
var newkey = oldkey+1;
if(yourdict.ContainsKey(newkey)){
var newvalue = yourdict[newkey];
}
如果整数不是连续的,可以使用
var upperBound = d.Max(kvp => kvp.Key)+1; // to prevent infinite loops
while(!yourdict.ContainsKey(newkey) && newkey < upperBound) {
newkey++;
}
正如Michael Stum指出的,
字典
没有排序(它是一个哈希表),因此没有键的“索引”这样的东西。相反,您可以使用它(顾名思义)进行排序并提供方法
请注意,
Dictionary
的性能特征不同于SortedList
。对于插入和删除,字典是O(1),而SortedList是O(logn) 如果不使用其他集合,可以这样做。虽然我不确定这有多有效
classIndex = classes.ToList().IndexOf(new KeyValuePair<int, classname>(newKey, classes[newKey]));
classIndex=classes.ToList().IndexOf(newkeyvaluepair(newKey,classes[newKey]);
或一个有序的字典:@mwilson非常正确,我已经更改了我的答案<代码>队列听起来真的很蠢:)嗯,在我每次调用它的函数中,我应该把键复制到一个列表中,对它排序,然后使用prev/next吗?(我仍然可以通过扫描值来找到当前索引)我不需要它们被添加的顺序,我需要var keys=(从您dict.keys中的key orderby key select key)接受的key value的顺序。ToList()代码>答案。我赞成的解决办法。当我试图在没有仔细阅读你的文章的情况下写它时,我弄错了。我写错了医嘱。钥匙[钥匙]。Yikes(哎哟,抛出了一个很好的异常,但我感到困惑)或classIndex=classes.Keys.ToList().IndexOf(newKey)
classIndex = classes.ToList().IndexOf(new KeyValuePair<int, classname>(newKey, classes[newKey]));