按值对字典排序 - 按字母C#降序

时间:2014-06-04 18:00:01

标签: c# linq


我们说我们有字典:Dict('a' => 2, 'b' => 3, 'c' => 2, 'd' => 4, 'e' => 2)

我用过:

var items = from pair in Dict orderby pair.Value descending select pair;

一切都很好,输出是:

d: 4
b: 3
c: 2
e: 2
a: 2

现在我想按字母顺序对具有相同值的键进行排序,以获得:

d: 4
b: 3
a: 2
c: 2
e: 2

但我不知道如何制作它 有什么想法吗?

3 个答案:

答案 0 :(得分:8)

按2个值排序,语法为:

var items = from pair in Dict 
            orderby pair.Value descending, 
                    pair.Key 
            select pair;

答案 1 :(得分:8)

如果我正确理解你的问题,那么它就像:

一样简单
var items = Dict.OrderByDescending(r=> r.Value)
                .ThenBy(r=> r.Key);

您需要使用Enumerable.ThenBy (或Enumerable.ThenByDescending根据您的要求在多个字段上订购)

答案 2 :(得分:2)

var dict = new Dictionary<string, int>
{
   {"a", 2},
   {"b", 3},
   {"c", 2},
   {"d", 4},
   {"e", 2}
};

var sorted = dict.OrderByDescending(x => x.Value).ThenBy(x => x.Key);