Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 基于键的排序字典_Vb.net_Sorting_Dictionary - Fatal编程技术网

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

我需要在VB.net中根据键的数量订购一本词典。键和值都是字符串。字典没有
.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表达式