c# – SortedDictionary按键的相反顺序

参见英文答案 > Reverse Sorted Dictionary in .NET                                    5个
我有以下字典:

SortedDictionary<int, string> dictionary = new SortedDictionary<int, string>();
dictionary.add(2007, "test1");
dictionary.add(2008, "test2");
dictionary.add(2009, "test3");
dictionary.add(2010, "test4");
dictionary.add(2011, "test5");
dictionary.add(2012, "test6");

我想颠倒元素的顺序,这样当我在屏幕上显示项目时,我可以从2012开始.如果可能的话,我想将反向字典重新分配给变量字典.

我试过了Dictionary.Reverse,但这似乎并没有像我想象的那样容易.

最佳答案
你可以给SortedDictionary一个IComparer< TKey>在建设.您只需提供一个可以逆转订单的产品.例如:

public sealed class ReverseComparer<T> : IComparer<T>
{
    private readonly IComparer<T> original;

    public ReverseComparer(IComparer<T> original)
    {
        // TODO: Validation
        this.original = original;
    }

    public int Compare(T left, T right)
    {
        return original.Compare(right, left);
    }
}

然后:

var dictionary = new SortedDictionary<int, string>(
       new ReverseComparer<int>(Comparer<int>.Default));

转载注明原文:c# – SortedDictionary按键的相反顺序 - 代码日志