how to sort a collection by datetime in c#

I have a List that I need to sort by DateTime, the class MyStuff looks like:

public class MyStuff
{
   public int Type {get;set;}
   public int Key {get;set;}
   public DateTime Created {get;set;}
}

I need to be able to sort the collection List by the Created (DateTime) field.


You seem to be working with a List<T> object, in which case the most efficient (and a simple) method would be the following:

myList.Sort((x, y) => DateTime.Compare(x.Created, y.Created));

This uses the overload of the List.Sort method than takes a Comparison<T> delegate (and thus lambda expression).

You can of course use the LINQ OrderBy extension method, but I don't think this offers any advantages, and can be significantly slower, depending on your situation.

myList = myList.OrderBy(x => x.Created).ToList();

var query = 
    from m in mystuffcollection
    orderby m.Created ascending
    select m;

For those who are looking for a way to sort the data on the basis of a nested property can use the sort function something like below:

MyList.Sort((x, y) => x.Datetime.CompareTo(y.Datetime));

Now the major differences between using OrderBy and Sort are performance and return value.

Sort basically sorts the existing List<T> whereas OrderBy returns a new IEnumerable<T>