C# 如何按降序排列DateTime对象的ArrayList?
如何按降序排列DateTime对象的ArrayList 谢谢。C# 如何按降序排列DateTime对象的ArrayList?,c#,C#,如何按降序排列DateTime对象的ArrayList 谢谢。List.Sort(您的DateTimeComparer)在您的DateTimeComparer:IComparer的位置 List<T>.Sort(YourDateTimeComparer) where YourDateTimeComparer : IComparer<DateTime> 下面是一个自定义IComparer使用的示例:使用反向排序的日期时间比较器。呼叫排序 public class Rev
List.Sort(您的DateTimeComparer)在您的DateTimeComparer:IComparer的位置
List<T>.Sort(YourDateTimeComparer) where YourDateTimeComparer : IComparer<DateTime>
下面是一个自定义IComparer使用的示例:使用反向排序的日期时间比较器。呼叫排序
public class ReverseDateComparer:IComparer{
public int Compare(object x, object y){
return -1 * DateTime.Compare(x, y);
}
}
list.Sort(new ReverseDateComparer());
首先,除非您坚持使用Framework1.1,否则您根本不应该使用
ArrayList
。您应该使用强类型的泛型列表
对于自定义排序,有一个采用比较器的Sort
方法重载。通过反转常规比较,可以按降序进行排序:
list.Sort(delegate(DateTime x, DateTime y){ return y.CompareTo(x); });
更新:
使用C#3中的lambda表达式,委托更容易创建:
list.Sort((x, y) => y.CompareTo(x));
如果您使用的是.NET 3.5:
// ArrayList dates = ...
var sortedDates = dates.OrderByDescending(x => x);
// test it
foreach(DateTime dateTime in sortedDates)
Console.WriteLine(dateTime);
正如“Guffa”已经说过的,除非您在.NET1.1中,否则不应该使用ArrayList
;下面是一个更简单的列表
示例:
List<DateTime> dates = ... // init and fill
dates.Sort();
dates.Reverse();
列出日期=…//初始化和填充
dates.Sort();
日期。反向();
您的日期现在是按降序排序的。从ArrayList中,您也需要一个Cast(),而且效率要稍高一些(避免每次比较的乘法)。