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>