如何使用LINQ按降序对Value进行排序并按字母顺序对Key进行排序?

时间:2018-08-21 18:59:26

标签: c# .net linq

这就是我所做的,

Dictionary<string, int> colorRank = new Dictionary<string, int>();

//代码以填充字典。

var result = colorRank.OrderByDescending(i => i.Value).ThenBy(i => i.Key);

它将值按降序排序,但不按字母顺序对键进行排序。有什么建议么?

1 个答案:

答案 0 :(得分:0)

此行为是预期的。您正在覆盖第一类。只有在值中有重复的值时,您才能注意到差异。然后,该值的键列表将按您期望的字母顺序进行排序。因此,您的代码是正确的,您的期望也是如此。请在下面的示例代码中注意10键。

public static void methodSort()
    {
        Dictionary<string, int> colorRank = new Dictionary<string, int>();
        //Code to fill the dictionary.
        colorRank.Add("bla2", 10);
        colorRank.Add("bla1", 1);
        colorRank.Add("bla3", 11);
        colorRank.Add("blay", 5);
        colorRank.Add("blay1", 10);
        var result = colorRank.OrderByDescending(i => i.Value).ThenBy(i => i.Key);

        foreach (var v in result)
        {
            Console.WriteLine($"{v.Key} {v.Value}");
        }
        /* Output
           bla3 11
           bla2 10
           blay1 10
           blay 5
           bla1 1
         */
    }
相关问题