C# 按键和值对词典排序?

C# 按键和值对词典排序?,c#,.net,sorting,dictionary,C#,.net,Sorting,Dictionary,如果我想用C#对字典进行排序,排序顺序由它的键和值决定。类似于按值降序,在那些具有相同值的函数中,按键降序。似乎很可能只按键或只按值排序,但按键和值排序都很烦人。使用System.Linq; using System.Linq; ... IOrderedEnumerable<KeyValuePair<TKey, TValue>> sortedCollection = myDictionary .OrderByDescending(x

如果我想用C#对字典进行排序,排序顺序由它的键和值决定。类似于按值降序,在那些具有相同值的函数中,按键降序。似乎很可能只按键或只按值排序,但按键和值排序都很烦人。

使用System.Linq;
using System.Linq;
...
IOrderedEnumerable<KeyValuePair<TKey, TValue>> sortedCollection = myDictionary
                    .OrderByDescending(x => x.Value)
                    .ThenByDescending(x => x.Key);
... IOrderedEnumerable sortedCollection=myDictionary .OrderByDescending(x=>x.Value) 。然后按降序(x=>x.Key);
如果需要更复杂的排序方案,请实现一个IComparer>,以便在OrderBy或OrderByDescending的重载版本中使用。

无法对字典进行排序,因为字典在内部将数据存储为哈希表,并且无法对其重新排序。您必须将其转换为List First对密钥进行排序的目的是什么?除了字典,你还可以使用一些,然后你可以对键和值进行排序,除非我不知道这样做的目的。如果您需要使用字典对集合进行排序,这是一个错误的选择。如果有帮助,请接受回答。上一次
出现差异的原因是什么?字典无法排序。你们破坏了订购的效果。@Andrey我一定要在发布前测试我的代码!你又对了。今天的演讲毫无意义。IOrderedEnumerable应该足够了。@nawfal的意思是使用
var
@nawfal谢谢你的翻译。我故意没有使用
var
,以便OP(以及其他可能经验较少的开发人员)第一眼就能看到返回类型。我尽量让我的答案尽可能有用,即使结果代码有时不像它可能的那样惯用。是的,我理解。我不是在批评。只是你努力的一个指针:)