如何按降序对DateTime对象的ArrayList进行排序?
谢谢。
答案 0 :(得分:33)
首先,除非你坚持使用框架1.1,否则你根本不应该使用ArrayList
。您应该使用强类型通用List<DateTime>
。
对于自定义排序,Sort
方法的重载需要比较器。通过反转常规比较,您可以按降序排序:
list.Sort(delegate(DateTime x, DateTime y){ return y.CompareTo(x); });
使用C#3中的lambda表达式,委托更容易创建:
list.Sort((x, y) => y.CompareTo(x));
答案 1 :(得分:16)
正如“Guffa”已经说过的那样,除非你在.NET 1.1中,否则你不应该使用ArrayList
;这里有一个更简单的List<DateTime>
示例:
List<DateTime> dates = ... // init and fill
dates.Sort();
dates.Reverse();
您的日期现在按降序排列。
答案 2 :(得分:3)
使用反向排序的DateTime Comparer。呼叫排序。
public class ReverseDateComparer:IComparer{
public int Compare(object x, object y){
return -1 * DateTime.Compare(x, y);
}
}
list.Sort(new ReverseDateComparer());
答案 3 :(得分:2)
如果您使用的是.NET 3.5:
// ArrayList dates = ...
var sortedDates = dates.OrderByDescending(x => x);
// test it
foreach(DateTime dateTime in sortedDates)
Console.WriteLine(dateTime);
答案 4 :(得分:0)
List<T>.Sort(YourDateTimeComparer) where YourDateTimeComparer : IComparer<DateTime>
以下是使用自定义IComparer的示例:How to remove duplicates from int[][]