2016-03-22 19 views
-2

Hash tablosunu, anahtar değerinin artan düzeninde 1-20 arası bir aralıkta ayarlamak istiyorum.C# Ters sırayla hashtable ile yineleyin

Orijinal kodu:

(yerine çıkan, 20 'den 1) Hashtable boyunca, ancak ters döngüler
IDictionaryEnumerator crcEnumerator = crcHashTable.GetEnumerator(); 

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

.

Ben

foreach(DictionaryEntry de in crcHashTable) 

kullanmaya çalışıyor teşebbüs ama yine ters sırayla karma tablo döngüsü.

Karma tablonun anahtar değerine göre artan sırada nasıl döngü yapabilirim?

Yardımlarınız için teşekkürler!

+3

10 yıldır kullanılmıyor Hashtable kullanıyorsunuz Herhangi bir neden? – usr

+3

Toplama ve sipariş konuları üzerinde yineleme yapmanız gerekiyorsa, bir SortedDictionary ve IEnumerable'ın .Reverse yöntemini – n8wrl

+0

bir "for döngüsü" kullanmayı deneyin ve '++' artışını kullanmak yerine '- 'kullanın. Tersinde bir 'Koleksiyon' aracılığıyla nasıl döngü yapılacağına dair örnekler .. bu örnekleri bir marş olarak kullanabilirsiniz .. – MethodMan

cevap

0

Yanlış veri yapısını kullanıyorsunuz. Bunun yerine SortedDictionary kullanın:

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); 

Sadece emin eklemeyi olun:

using System.Collections; 
using System.Collections.Generic; 
using System.Linq;