2014-04-10 36 views
0

我知道Hastable無法排序的朋友,但由於複雜性高,我必須使用Hashtable而不是字典。現在我處於需要從Hashtable中獲取頂部(最多)3個元素的狀態。請向我展示任何最簡單,最有效的方法,因爲我處理的是數百萬行。從Hashtable獲取頂級元素

.....................

輸入

................ .....

hashtable.Add("A", 1000);  
hashtable.Add("B", 500);  
hashtable.Add("C", 700); 
hashtable.Add("D", 800);  
hashtable.Add("E", 400); 
hashtable.Add("F", 300); 

.....................

輸出

........ .............

("A", 1000), ("D", 800) and ("C",700) 
+2

您對「前三個要素」的定義是什麼?我注意到,在你的問題中,你正確地聲明Hashtables不能被排序,所以它看起來像你回答了你自己的問題。 – Dai

+0

「複雜性很好,我必須在字典上使用Hashtable」?你說的是什麼「複雜性」? –

+1

'我必須在字典上使用Hashtable'請注意'Dictionary'也沒有排序。如果您需要訂購,您可以使用'SortedList'或'SortedDictionary' –

回答

1
hashtable.Cast<DictionaryEntry>().OrderBy(entry => entry.Value).Take(3); 
+0

OP說'我正在處理數百萬行' –

+0

我可以將其轉換爲列表嗎?如果是的話如何? differentKeys.Cast ()。OrderBy(entry => entry.Value).Take(3).ToList(); 不工作 –

+0

它的好的散列表有很少的記錄,但是那些數百萬行每次都訪問散列表。所以它似乎沒問題。我只需要轉換到List的方式。 –