我想按键值的升序循环遍历哈希表,我在1-20之间设置一个int。
原始代码:
IDictionaryEnumerator crcEnumerator = crcHashTable.GetEnumerator();
while(crcEnumerator.MoveNext())
{
// does stuff with the keys/values
}
循环哈希表,但顺序相反(20比1,而不是升序)。
我试图尝试使用
foreach(DictionaryEntry de in crcHashTable)
但它仍然以相反的顺序遍历哈希表。
如何根据哈希表的键值以升序循环?
感谢您的帮助!
答案 0 :(得分:0)
您使用了错误的数据结构。请改用SortedDictionary
:
Hashtable hash = new Hashtable();
hash[3] = "three";
hash[1] = "one";
hash[2] = "two";
var dictionary = hash.Cast<DictionaryEntry>().ToDictionary(kvp => (int)kvp.Key, kvp => (string)kvp.Value);
var sorted = new SortedDictionary<int, string>(dictionary);
请确保包含:
using System.Collections;
using System.Collections.Generic;
using System.Linq;