Как отсортировать ArrayList объектов DateTime в порядке убывания?
Как отсортировать объекты ArrayList из DateTime в порядке убывания?
Спасибо.
Ответ 1
Прежде всего, если вы не застряли в использовании фреймворка 1.1, вы не должны использовать ArrayList вообще. Вместо этого вы должны использовать типизированный типичный List<DateTime>.
Для пользовательской сортировки существует перегрузка метода Sort, который принимает сопоставитель. Поменяв регулярное сравнение, вы получаете сортировку в порядке убывания:
С лямбда-выражениями в С# 3 делегат легче создать:
list.Sort((x, y) => y.CompareTo(x));
Ответ 2
Как уже говорилось, "Guffa" не следует использовать ArrayList, если вы не в .NET 1.1; здесь более простой пример List<DateTime>, хотя:
List<DateTime> dates = ... // init and fill
dates.Sort();
dates.Reverse();
Ваши даты сортируются в порядке убывания.
Ответ 3
Используйте сопоставление DateTime Comparer, которое сортируется в обратном порядке. Вызов Сортировка.
public class ReverseDateComparer:IComparer{
public int Compare(object x, object y){
return -1 * DateTime.Compare(x, y);
}
}
list.Sort(new ReverseDateComparer());
Ответ 4
Если вы используете .NET 3.5:
// ArrayList dates = ...
var sortedDates = dates.OrderByDescending(x => x);
// test it
foreach(DateTime dateTime in sortedDates)
Console.WriteLine(dateTime);
Ответ 5
List<T>.Sort(YourDateTimeComparer) where YourDateTimeComparer : IComparer<DateTime>