c#以相反的顺序迭代哈希表

时间:2016-03-22 19:57:31

标签: c# sorting dictionary hashtable enumerator

我想按键值的升序循环遍历哈希表,我在1-20之间设置一个int。

原始代码:

IDictionaryEnumerator crcEnumerator = crcHashTable.GetEnumerator();

while(crcEnumerator.MoveNext()) 
{ 
   // does stuff with the keys/values 
}

循环哈希表,但顺序相反(20比1,而不是升序)。

我试图尝试使用

foreach(DictionaryEntry de in crcHashTable) 

但它仍然以相反的顺序遍历哈希表。

如何根据哈希表的键值以升序循环?

感谢您的帮助!

1 个答案:

答案 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;