You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LINQ排序失效求助:附代码及dd-mm-yy日期格式说明

排查LINQ排序未生效的问题

嘿,我来帮你搞定这个排序失效的问题!结合你给出的代码和日期格式信息,大概率是以下几个原因之一,咱们一个个捋:

  • Issue_Date字段类型是字符串而非DateTime
    这是最常见的坑!如果你的Issue_Date是string类型,LINQ的OrderBy会按字符串字典序排序,而不是日期逻辑顺序。比如"31-12-22 10:00:00 AM"会被认为比"01-01-23 09:00:00 AM"大,因为字符串比较是从左到右逐个字符比的,"3"比"0"大,完全不符合日期的先后逻辑。

  • 日期字符串格式解析不匹配
    就算你打算转成DateTime排序,如果格式符写错了也会出问题。你用的是dd-mm-yy hh:mm:ss AM,这里要注意:

    • mm代表分钟,月份应该用MM
    • AM/PM对应的格式符是tt
      格式字符串写错的话,要么解析失败,要么得到错误的日期,自然排序不对。

修正方案

把字符串类型的日期转成DateTime再排序,修改你的排序代码如下:

// 记得引入System.Globalization命名空间
Incomplete_issue_model = Incomplete_issue_model
    .OrderBy(d => DateTime.ParseExact(d.Issue_Date, "dd-MM-yy hh:mm:ss tt", CultureInfo.InvariantCulture))
    .ToList();

如果担心有格式错误的日期导致崩溃,可以用TryParseExact做安全处理:

Incomplete_issue_model = Incomplete_issue_model
    .OrderBy(d => {
        DateTime.TryParseExact(d.Issue_Date, "dd-MM-yy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out var date);
        return date;
    })
    .ToList();

额外检查点

  • 确认Incomplete_issue_model里的Issue_Date没有空值或格式错误的条目,这些会影响排序结果
  • 如果需要降序排序,把OrderBy改成OrderByDescending就好

内容的提问来源于stack exchange,提问作者kevin patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:00:19