Ash*_*ine 4 c# linq predicate sql-order-by
我正在尝试创建一个lambda表达式(Linq,C#3.5),它可以对数据类型为String但实际上包含可解析的DateTime的值执行OrderBy.
例如,典型值可能是"5/12/2009","1/14/2008"等.
下面的OrderBy子句可以正确地进行排序(就像字符串数据一样),但实际上我想将这些值视为DateTimes,并按日期执行排序.(sortColumn类似于"dateCreated".)
List<MyObject> orderedList = unorderedList.OrderBy(p => p.Details.Find(s => s.Name == sortColumn).Value).ToList();
Run Code Online (Sandbox Code Playgroud)
有没有办法转换谓词中的值来执行此操作?任何帮助赞赏!
相当粗糙和低效:
List<MyObject> orderedList = unorderedList.OrderBy(p => DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value)).ToList();
Run Code Online (Sandbox Code Playgroud)
减少查找/解析的次数:
List<MyObject> 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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9646 次 |
| 最近记录: |