需要使用DateTime转换的lambda表达式OrderBy

我正在尝试创建一个lambda表达式(Linq,C#3.5),它可以对数据类型为String但实际上包含可解析的DateTime的值执行OrderBy。

例如,典型值可能是“5/12/2009”,“1/14/2008”等。

下面的OrderBy子句可以正确地进行排序(就像字符串数据一样),但实际上我想将这些值视为DateTimes,并按日期执行排序。 (sortColumn类似于“dateCreated”。)

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

有没有办法转换谓词中的值来执行此操作? 任何帮助赞赏!

相当粗糙和低效:

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

减少查找/解析的次数:

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

投影日期/时间值,然后按它排序。

 var orderedList = (from p in unorderedList let value = DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value) orderby value select p) .ToList();