Skip to content Skip to sidebar Skip to footer

Need Lambda Expression Orderby With Datetime Conversion

I am trying to create a lambda expression (Linq, C# 3.5) that can perform a OrderBy on a value that is of data type String but which actually contains a parse-able DateTime. For e

Solution 1:

Rather gross and inefficient:

List<MyObject> orderedList = unorderedList.OrderBy(p =>DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value)).ToList();

To reduce the number of lookups/parsing:

List<MyObject> orderedList =
    (from extracted in (from p in unorderedList
                        selectnew { Item = p, Date = DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value })
     orderby extracted.Date
     select extracted.Item)
    .ToList();

Solution 2:

Project the date/time value and then sort by it.

var orderedList =
    (from p in unorderedList
     letvalue = DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value)
     orderbyvalueselect p)
     .ToList();

Post a Comment for "Need Lambda Expression Orderby With Datetime Conversion"