2013-02-22 45 views
0

我有一個存儲下拉列表的數據的字典,我想添加一個all選項,但我希望這是集合中的第一個條目,因此它將按正確的順序當我建立我的HTML。將一個KeyValuePair添加到詞典的前面

明顯的解決辦法是通過項目的所有選項添加到新的字典,然後循環:

Dim ListWithALL As Dictionary(Of Integer, String) 
ListWithALL.Add(0, "All") 
For Each option As KeyValuePair(Of Integer, String) In OptionsList 
    ListWithALL.add(option) 
Next 
OptionsList = ListWithALL 
ListWithALL.dispose() 

但我真的不喜歡這種解決方案,因爲它似乎有點很長的路要走和一個表演豬。

我也想過使用類似IComparable和排序數據的東西,但我不希望其他數據與它們添加的順序相同。

任何人有任何想法?

+0

那麼這是VB.Net代碼,但你已經把問題標記爲C#。那你在用什麼?! – Arran 2013-02-22 11:36:39

+0

這不是一個特定於語言的問題,它是一個.NET框架問題,所以可以通過C#dev或VB開發人員來解答。 – 2013-02-22 11:42:55

回答

1

您不能將項目添加到Dictionary<TKey,TValue>中的任何「位置」,因爲它沒有排序。

使用SortedDictionary<Tkey,TValue>如果您需要確保訂單 - 它是按鍵順序排序的,所以如果您希望在開始時放置一個項目,您需要使用一個將按鍵排序的鍵。

+0

這件事情是我不想排序詞典中的其他數據,因爲它已經按照我想要的順序排列。感謝您將SortedDictionary引入我的注意,儘管我可以在某些時候使用它。 – 2013-02-22 11:49:36

+0

@NathanHastings - 我能看到的唯一其他選項是先添加此項目_first_,然後是所有其他項目。但是,項目如何實際存儲在「Dictionary」中是一個實現細節 - 它可以工作,但可能不是。考慮一種替代設計,用於從字典中提取項目。 – Oded 2013-02-22 11:50:57

+0

對於替代設計,我認爲你的權利,我希望它是第一位的原因是所以我不必在我的循環之前重複代碼,但我會想出一些東西。 – 2013-02-22 11:59:55