Sort
List
, DateTimes
In a C# program, a List
of DateTimes
can be sorted. We can base this on the year or the month—any valid ordering of the times is possible.
It is sometimes necessary to sort DateTimes
from most recent to least recent, and the opposite. Sorting based on the month is also useful.
This program creates a List
of 4 DateTime
values. Next it calls the 4 Sort
custom methods. After the sorting is done we print out the lists with Console.WriteLine
.
List.Sort
method. They provide a Comparison
delegate as a lambda expression.Comparison
implementation returns the result of the CompareTo
method on the 2 arguments.DateTimes
, we get them in chronological order. This is due to the comparison functions on DateTime
.using System; using System.Collections.Generic; class Program { static void Main() { var list = new List<DateTime>(); list.Add(new DateTime(1980, 5, 5)); list.Add(new DateTime(1982, 10, 20)); list.Add(new DateTime(1984, 1, 4)); list.Add(new DateTime(1979, 6, 19)); Display(SortAscending(list), "SortAscending"); Display(SortDescending(list), "SortDescending"); Display(SortMonthAscending(list), "SortMonthAscending"); Display(SortMonthDescending(list), "SortMonthDescending"); } static List<DateTime> SortAscending(List<DateTime> list) { list.Sort((a, b) => a.CompareTo(b)); return list; } static List<DateTime> SortDescending(List<DateTime> list) { list.Sort((a, b) => b.CompareTo(a)); return list; } static List<DateTime> SortMonthAscending(List<DateTime> list) { list.Sort((a, b) => a.Month.CompareTo(b.Month)); return list; } static List<DateTime> SortMonthDescending(List<DateTime> list) { list.Sort((a, b) => b.Month.CompareTo(a.Month)); return list; } static void Display(List<DateTime> list, string message) { Console.WriteLine(message); foreach (var datetime in list) { Console.WriteLine(datetime); } Console.WriteLine(); } }SortAscending 6/19/1979 12:00:00 AM 5/5/1980 12:00:00 AM 10/20/1982 12:00:00 AM 1/4/1984 12:00:00 AM SortDescending 1/4/1984 12:00:00 AM 10/20/1982 12:00:00 AM 5/5/1980 12:00:00 AM 6/19/1979 12:00:00 AM SortMonthAscending 1/4/1984 12:00:00 AM 5/5/1980 12:00:00 AM 6/19/1979 12:00:00 AM 10/20/1982 12:00:00 AM SortMonthDescending 10/20/1982 12:00:00 AM 6/19/1979 12:00:00 AM 5/5/1980 12:00:00 AM 1/4/1984 12:00:00 AM
The Ascending methods order the data from low to high, and the Descending methods do the opposite. Also, the SortMonth
methods sort based on the month value of the DateTimes
.
We looked at a way you can sort a List
of DateTime
instances in your C# program. It is also possible to sort with a query expression. This syntax might be clearer for some programmers.