2011-10-19 89 views
5

我需要根据密钥在VB.net中订购字典。键和值都是字符串。该字典没有.Sort()。有没有办法做到这一点,而不必写我自己的排序算法?基于密钥的字典排序

+0

“命令字典”对你意味着什么? – jason

+0

我修改了它来澄清,但它被编辑。我需要根据他们的钥匙来订购字典。 – user489041

+0

不,看,你还没有说出“点字典”的意思。告诉我,你希望基于关键字,并不能解释你对“订购字典”意味着什么。 – jason

回答

1

究竟在vb.net工作验证码:

 Dim myDict As New Dictionary(Of String, String) 
     myDict.Add("one", 1) 
     myDict.Add("four", 4) 
     myDict.Add("two", 2) 
     myDict.Add("three", 3) 

     Dim sortedDict = (From entry In myDict Order By entry.Value Ascending).ToDictionary(Function(pair) pair.Key, Function(pair) pair.Value) 

     For Each entry As KeyValuePair(Of String, String) In sortedDict 
      Console.WriteLine(String.Format("{0,10} {1,10}", entry.Key, entry.Value)) 
     Next 
+0

我认为你希望'Order By entry.Key'不是'entry.Value'基于OP的编辑。 –

+0

对于entry.Key,我们可以使用任何LINQ表达式的SortedDictionary – apros

2

如果您需要保留的基本解释,而不是使用SortedDictionary,你可以使用LINQ基于关闭的,你需要什么都条件来返回一个IEnumerable :

Dim sorted = From item In items 
      Order By item.Key 
      Select item.Value 

的SortedDictionary可能会但是只要你没有需要反转那种在未来的某个时刻给下重复使用更多的性能。