降序排序列表






2.75/5 (3投票s)
如果希望对象按降序排序,该怎么办?
引言
微软提供了一个现成的排序列表对象,它可以自动对其项目进行排序。
但是,如果你想让对象按降序排序呢?
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日:初始发布