Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按降序排列DateTime对象的ArrayList?_C# - Fatal编程技术网

C# 如何按降序排列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

如何按降序排列DateTime对象的ArrayList

谢谢。

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(),而且效率要稍高一些(避免每次比较的乘法)。