如何在OrderDictionary中向后迭代

时间:2015-02-26 06:34:12

标签: c# collections

我有一个OrderedDictionary,我正在迭代它:

IDictionaryEnumerator myEnumerator = Model.RecentViews.GetEnumerator();

            while (myEnumerator.MoveNext())
            {
                <div>
                    <a href=@(myEnumerator.Key)>@myEnumerator.Value</a>
                </div>
            }

但实际上我想反向迭代它。谁能告诉我怎么做?

基本上我正在使用这个OrderedDictionary来显示网站上最后访问过的页面的链接列表。关键是url,值是链接的文本。我试图在顶部显示最新的,因此我想向后迭代。我使用OrderedDictionary的原因是因为必须保留链接的顺序。

也许我没有使用合适的收藏品我不确定?

1 个答案:

答案 0 :(得分:0)

这可以解决这个问题吗?

    foreach(var key in Model.RecentViews.Keys.Cast<*TheTypeOfTheKey*>().Reverse())
    {
        <div>
            <a href=@(key)>@Model.RecentViews[key]</a>
        </div>
    }

修改

演示使用通用的SortedList(控制台应用程序);

class Program
{
    static void Main(string[] args)
    {
        SortedList<int, string> dict = new SortedList<int, string>();
        dict.Add(22, "Entry22");
        dict.Add(11, "Entry11");

        //forward
        Console.WriteLine("Forward:");
        foreach (var item in dict)
        {
            Console.WriteLine("{0} : {1}", item.Key, item.Value );
        }

        //backward
        Console.WriteLine("Backward:");
        foreach (var item in dict.Reverse())
        {
            Console.WriteLine("{0} : {1}", item.Key, item.Value );
        }
    }
}

输出:

Forward:
11 : Entry11
22 : Entry22
Backward:
22 : Entry22
11 : Entry11