如何在C#中以相反的顺序(从最后到第一个)迭代字典<string,string>?

Sar*_*nan 11 c# c#-4.0

我有一个字典并在其上添加了一些元素.例如,

Dictionary<string, string> d = new Dictionary<string, string>();

d.Add("Content","Level0");
d.Add("gdlh","Level1");
d.Add("shows","Level2");
d.Add("ytye","Level0");
Run Code Online (Sandbox Code Playgroud)

在C#中,Dictionary保持元素按自然顺序排列.但我现在想要将这些值从最后一个迭代到第一个(即,逆序).i mean,

首先,我想阅读ytye然后显示,gdlh,最后是内容.

请指导我摆脱这个问题......

Phi*_*hil 17

只需使用Linq扩展方法Reverse

例如

foreach( var item in d.Reverse())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)


yam*_*men 8

使用LINQ Reverse,但请注意不会反转:

var reversed = d.Reverse();
Run Code Online (Sandbox Code Playgroud)

但请注意,这不是SortedDictionary,因此首先不一定保证顺序.也许你想要OrderByDescending呢?


Ari*_*ion 7

也许OrderByDescending在钥匙上。像这样:

d.OrderByDescending (x =>x.Key)
Run Code Online (Sandbox Code Playgroud)

Foreach像这样:

foreach (var element in d.OrderByDescending (x =>x.Key))
{

}
Run Code Online (Sandbox Code Playgroud)