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

C# 如何使用c中的键对字典进行排序?是否可以使用LINQ?,c#,C#,所需输出: (1)key = "4" value"122" (2)key = "8" value"1772" (3)key = "0" value"166" 您可以使用SortedList您可以使用SortedList根据您希望如何进一步处理生成的表达式(是否打印出来?),只需按键对键值对进行排序可能会有所帮助: (1)key = "0" value"166" (2)key = "4" value"122" (3)key = "8" value"177

所需输出:

    (1)key = "4" value"122"
    (2)key = "8" value"1772"
    (3)key = "0" value"166"

您可以使用
SortedList

您可以使用
SortedList

根据您希望如何进一步处理生成的表达式(是否打印出来?),只需按键对键值对进行排序可能会有所帮助:

   (1)key = "0" value"166"
   (2)key = "4" value"122"
   (3)key = "8" value"1772"

根据您希望如何进一步处理结果表达式(是否打印出来?),只需按键对键值对排序可能会有所帮助:

   (1)key = "0" value"166"
   (2)key = "4" value"122"
   (3)key = "8" value"1772"
本质上是未排序的-或者至少,顺序没有保证

和都是在迭代时按键排序的映射。它们在实现上有所不同:
SortedList
实现为键/值对的排序列表,而
SortedDictionary
是一个红/黑树。两者都有O(logn)搜索时间,而不是
字典的O(1)(假设有一个合适的散列),其他性能复杂度度量也不同-
SortedList
SortedDictionary
的文档都给出了两者之间不同权衡的详细信息

您可以传入一个自定义的
IComparer
,以确定键的排序方式,但排序总是按键进行的,而不是按值。在你所给出的情况下,这看起来不应该是个问题——尽管如果键实际上是字符串的数值,你应该考虑如何命令键“1”、“11”和“2”……< /P> < P>本质上是未排序的,或者至少,顺序不能保证。 和都是在迭代时按键排序的映射。它们在实现上有所不同:
SortedList
实现为键/值对的排序列表,而
SortedDictionary
是一个红/黑树。两者都有O(logn)搜索时间,而不是
字典的O(1)(假设有一个合适的散列),其他性能复杂度度量也不同-
SortedList
SortedDictionary
的文档都给出了两者之间不同权衡的详细信息


您可以传入一个自定义的
IComparer
,以确定键的排序方式,但排序总是按键进行的,而不是按值。在你所给出的情况下,这看起来不应该是个问题——尽管如果键实际上是字符串的数值,你应该考虑你想要键“1”、“11”和“2”的顺序……< / P >亲爱的托马斯,foreach语句需要更多的时间..你接受吗?.我也在使用相同的..我不认为foreach和Linq的性能有任何区别,这更多的是一个可读性和功能方法问题。如果你只想在一个地方排序,但在其他10个地方你不关心顺序,这似乎是我的最佳选择。亲爱的托马斯,foreach声明需要更多时间。你接受吗?我也在使用相同的…我认为foreach和Linq的表现没有任何区别,这更像是一个可读性和功能性的问题。如果你只想在一个地方分类,但在其他10个地方你不关心顺序,这似乎是我最好的选择。
foreach(var kvp in l_dictData.OrderBy(k => k.Key))
{ 
     Console.WriteLine("key = {0}, value = {1}", kvp.Key, kvp.Value);
}