Vb.net 基于键的排序字典
我需要在VB.net中根据键的数量订购一本词典。键和值都是字符串。字典没有Vb.net 基于键的排序字典,vb.net,sorting,dictionary,Vb.net,Sorting,Dictionary,我需要在VB.net中根据键的数量订购一本词典。键和值都是字符串。字典没有.Sort()。有没有一种方法可以做到这一点而不必编写自己的排序算法?想到了,但它只按键排序 否则,此答案可能会有所帮助。在vb.net中,请准确地使用此代码: Dim myDict As New Dictionary(Of String, String) myDict.Add("one", 1) myDict.Add("four", 4) myDict.Ad
.Sort()
。有没有一种方法可以做到这一点而不必编写自己的排序算法?想到了,但它只按键排序
否则,此答案可能会有所帮助。在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
如果需要保留基础字典而不使用SortedDictionary,可以使用LINQ根据所需的条件返回IEnumerable:
Dim sorted = From item In items
Order By item.Key
Select item.Value
SortedDictionary在重复使用的情况下可能会提供更高的性能,但前提是您不需要在将来的某个时候反转排序。订购字典对您意味着什么?我对其进行了修改以澄清这一点,但它已被编辑。我需要根据它们的键来订购字典。不,你看,你仍然没有说“订购字典”是什么意思。告诉我你想根据键订购字典并不能解释“订购字典”对你意味着什么。@Jason我认为在这个问题的上下文中,“订购字典”对我来说是显而易见的,意思是我想对它进行排序。这对你来说对字典“排序”有什么意义?您是否希望以某种方式对字典进行变异以使其“排序?”您是否只希望生成键的排序?是否要生成值的顺序?是否要生成键/值对的顺序?你想产生一个封装“排序”的全新数据结构吗?你看,你有字典。“排序”的概念相当模糊,特别是因为.NET中的
字典
结构不保留任何排序。我认为您希望按条目排序。Key
而不是条目。Value
基于OP的编辑。对于entry.Key,我们可以使用SortedDictionary,而不使用任何LINQ表达式