这就是我所做的,
Dictionary<string, int> colorRank = new Dictionary<string, int>();
//代码以填充字典。
var result = colorRank.OrderByDescending(i => i.Value).ThenBy(i => i.Key);
它将值按降序排序,但不按字母顺序对键进行排序。有什么建议么?
答案 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
*/
}