根据键对字典进行排序

发布于 2024-12-11 03:28:33 字数 94 浏览 0 评论 0原文

我需要在 VB.net 中根据按键订购一本字典。键和值都是字符串。该字典没有 .Sort()。有没有一种方法可以做到这一点而不必编写自己的排序算法?

I need to order a Dictionary in VB.net based off of the keys. The keys and values are all strings. The dictionary does not have a .Sort(). Is there a way to do this without having to write my own sorting algorithm?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

愁以何悠 2024-12-18 03:28:33

我想到了 SortedDictionary,但它仅按键排序。

否则,这个答案可能会有所帮助 你如何排序按值的 C# 字典?

SortedDictionary comes to mind, but it sorts only on the key.

Otherwise, this answer might help How do you sort a C# dictionary by value?.

清风疏影 2024-12-18 03:28:33

正是在 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

Exactly in vb.net work this code:

        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
极度宠爱 2024-12-18 03:28:33

如果您需要保留基础字典而不使用 SortedDictionary,您可以使用 LINQ 根据您需要的条件返回 IEnumerable:

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

SortedDictionary 在重复使用时可能会提供更高的性能,但只要您不需要在未来的某个时刻反转这种排序。

If you need to retain the underlying Dictionary and not use a SortedDictionary, you could use LINQ to return an IEnumerable based off of what ever criteria you need:

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

The SortedDictionary would probably give more performance under repeated usage however as long as you didn't need to invert that sort at some point in the future.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文