首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SortedList描述顺序

SortedList描述顺序
EN

Stack Overflow用户
提问于 2011-10-19 10:31:54
回答 4查看 27.9K关注 0票数 30

我使用SortedListdatecolumn动态排列arraylist记录,但在默认情况下是按升序排列的。我一直在尝试按降序排序,但无法获得。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-19 10:46:15

没有办法指示SortedList按降序进行排序。你必须像这样提供你自己的比较器

代码语言:javascript
复制
    class DescendedDateComparer : IComparer<DateTime>
    {
        public int Compare(DateTime x, DateTime y)
        {
            // use the default comparer to do the original comparison for datetimes
            int ascendingResult = Comparer<DateTime>.Default.Compare(x, y);

            // turn the result around
            return 0 - ascendingResult;
        }
    }

    static void Main(string[] args)
    {
        SortedList<DateTime, string> test = new SortedList<DateTime, string>(new DescendedDateComparer());
    }
票数 30
EN

Stack Overflow用户

发布于 2014-02-28 00:30:27

在比较时,应该用y替换x

代码语言:javascript
复制
class DescComparer<T> : IComparer<T>
{
    public int Compare(T x, T y)
    {
        if(x == null) return -1;
        if(y == null) return 1;
        return Comparer<T>.Default.Compare(y, x);
    }
}

然后是这个

代码语言:javascript
复制
var list = new SortedList<DateTime, string>(new DescComparer<DateTime>());
票数 40
EN

Stack Overflow用户

发布于 2011-10-19 10:55:02

您可以只使用Reverse()对SortedList进行降序排序:

代码语言:javascript
复制
var list = new SortedList<DateTime, string>();

list.Add(new DateTime(2000, 1, 2), "Third");
list.Add(new DateTime(2001, 1, 1), "Second");
list.Add(new DateTime(2010, 1, 1), "FIRST!");
list.Add(new DateTime(2000, 1, 1), "Last...");

var desc = list.Reverse();

foreach (var item in desc)
{
    Console.WriteLine(item);
}
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7815930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档