gpt4 book ai didi

c# - 需要带有 DateTime 转换的 lambda 表达式 OrderBy

转载 作者:太空狗 更新时间:2023-10-30 00:36:40 30 4
gpt4 key购买 nike

我正在尝试创建一个 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();

有没有办法转换谓词中的值来做到这一点?任何帮助表示赞赏!

最佳答案

相当粗糙和低效:

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

减少查找/解析的次数:

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();

关于c# - 需要带有 DateTime 转换的 lambda 表达式 OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213956/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com