Я использую SortedList
для упорядочения arraylist
динамически записываемых записей в порядке сортировки на datecolumn
, но по умолчанию он сортирует по возрастанию. Я пытался получить порядок в порядке убывания, но не смог его получить.
SortedList Desc Order
Ответ 1
Нет способа проинструктировать SortedList для сортировки в порядке убывания. Вы должны предоставить свой собственный Comparer следующим образом
class DescendedDateComparer : IComparer<DateTime>
{
public int Compare(DateTime x, DateTime y)
{
// use the default comparer to do the original comparison for datetimes
int ascendingResult = Comparer<DateTime>.Default.Compare(x, y);
// turn the result around
return 0 - ascendingResult;
}
}
static void Main(string[] args)
{
SortedList<DateTime, string> test = new SortedList<DateTime, string>(new DescendedDateComparer());
}
Ответ 2
Перемещение y для x должно выполняться при сравнении
class DescComparer<T> : IComparer<T>
{
public int Compare(T x, T y)
{
return Comparer<T>.Default.Compare(y, x);
}
}
а затем этот
var list = new SortedList<DateTime, string>(new DescComparer<DateTime>());
Ответ 3
Вы можете просто использовать Reverse() для сортировки SortedList в порядке убывания:
var list = new SortedList<DateTime, string>();
list.Add(new DateTime(2000, 1, 2), "Third");
list.Add(new DateTime(2001, 1, 1), "Second");
list.Add(new DateTime(2010, 1, 1), "FIRST!");
list.Add(new DateTime(2000, 1, 1), "Last...");
var desc = list.Reverse();
foreach (var item in desc)
{
Console.WriteLine(item);
}