如何使用c#中的键对字典进行排序---是否可以使用LINQ?

use*_*191 1 c#

    Dictionary<string,string> l_dictData = new Dictionary<string,string>
Run Code Online (Sandbox Code Playgroud)

上面的字典包含这样的数据:

    (1)key = "4" value"122"
    (2)key = "8" value"1772"
    (3)key = "0" value"166"
Run Code Online (Sandbox Code Playgroud)

所需输出:

   (1)key = "0" value"166"
   (2)key = "4" value"122"
   (3)key = "8" value"1772"
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

Dictionary<TKey, TValue> 本质上是未分类的 - 或者至少,订单不能保证.

SortedList<TKey, TValue>并且SortedDictionary<TKey, TValue>是迭代它们时按键排序的映射.它们的实现不同:SortedList<,>实现为键/值对的排序列表,而是SortedDictionary<,>红/黑树.两者都有O(log n)搜索时间而不是O(1)Dictionary<,>(假设一个不错的哈希值),而其他性能复杂性度量也是不同的 - 两者的文档SortedList<,>SortedDictionary<,>给出了两者之间不同权衡的细节.

您可以传递一个自定义IComparer<T>来确定如何排序键,但是排序总是在键上完成,从不在值上完成.在您给出的情况下看起来不应该是一个问题 - 尽管如果键实际上是数字的字符串值,您应该考虑如何键入"1","11"和"2"键...