如何在Dictionary中订购密钥?

时间:2018-05-20 15:32:44

标签: c# sorting dictionary

我有Dictionary<int?,List<string>>。我需要输出按键和按升序排序的值对。首先,我认为使用OrderedDictionary但它在对象类型中保存了键和值。也许某种程度上它可以通过扩展方法来完成?

2 个答案:

答案 0 :(得分:2)

这里有两个选项:

  1. 使用SortedList<TKey,TValue> / SortedDictionary<TKey,TValue>

    var sortedData = new SortedList<int?, List<string>>(currentDictionary);
    
  2. 使用Linq的OrderBy

    var sortedData = currentDictionary.OrderBy(x => x.Key);
    
  3. 您可以使用以下打印中的任何一个选项:

    foreach (var entry in sortedData)
    {
        Console.WriteLine("Key: {0}, Values: ", entry.Key);
    
        foreach (var value in entry.Value)
        {
            Console.WriteLine(value);
        }
    }
    

答案 1 :(得分:1)

Dictionary<int?, List<string>> yourDictionary = GetTheDictionary();
var sortedKeys = yourDictionary.Select(kvp => kvp.Key).OrderBy(k => k);

这将按升序为您提供所有按键的列表

如果你想要你的字典相同。即作为关键价值对。只需按键排序即可。

yourDictionary.OrderBy(kvp => kvp.Key);