65.9K
CodeProject 正在变化。 阅读更多。
Home

降序排序列表

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.75/5 (3投票s)

2008 年 5 月 27 日

CPOL
viewsIcon

43080

如果希望对象按降序排序,该怎么办?

引言

微软提供了一个现成的排序列表对象,它可以自动对其项目进行排序。

但是,如果你想让对象按降序排序呢?

Using the Code

创建以下类

internal class DescendingComparer : IComparer
    { 
        public int Compare(object x, object y)
        {
            try
            {
                return System.Convert.ToInt32(x).CompareTo
                    (System.Convert.ToInt32(y)) * -1;
            }
            catch (Exception ex)
            {
                return x.ToString().CompareTo(y.ToString());
            }
        } 
    }

然后创建排序列表

Sorted List clsScoresDesc = new SortedList(new DescendingComparer());

但是……这仍然不够好,因为我的键是double类型,所以我创建了以下类

internal class DoubleComparer : IComparer<double>
    {
        const double eps = 1E-10;
        public int Compare(double x, double y)
        { return y > x + eps ? 1 : y < x - eps ? -1 : 0; }
    } 

然后是排序列表

IComparer<double> doubleComparer = new DoubleComparer ();
slAdComponent = new SortedList<double, myComponent>( doubleComparer);

你也可以使用for循环倒序遍历排序列表,但我更喜欢使用IComparer

历史

  • 2008年5月27日:初始发布
© . All rights reserved.