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

使用IEnumerable查找存在对应文件的日期时出错,求问题排查

代码中的问题及修正要点
  • DateTime初始化错误:第一行直接将字符串赋值给DateTime类型变量,C#不允许这种隐式转换,必须用DateTime.Parse或DateTime.TryParse完成类型转换:

    DateTime testDate = DateTime.Parse("2021-05-09");
    
  • 重复解析与无效语法:Select中无需重复解析testDate(它已经是DateTime类型),且@符号对非字符串变量无效,应简化为:

    .Select(i => testDate.AddDays(-i))
    
  • 不存在的EXISTS方法:C#中判断文件是否存在需使用System.IO.File.Exists方法,同时要确保代码顶部引入using System.IO;命名空间。

  • 日期逻辑错误:FirstOrDefault的条件中,错误地对DateTime类型的s使用AddDays(-s)(s是日期对象,不是天数数值),直接用s格式化文件路径即可,无需重新计算日期。

修正后的示例代码

using System.IO;
// ...
DateTime testDate = DateTime.Parse("2021-05-09");
DateTime? snapshotDate = Enumerable.Range(0, 30)
    .Select(i => testDate.AddDays(-i))
    .FirstOrDefault(s => File.Exists(string.Format("/users/{0:yyyy/MM}/testfile_{0:yyyyMMdd}.txt", s)));

(注:将snapshotDate改为DateTime?可空类型,因为FirstOrDefault可能返回null,避免值类型无法接收null的问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:25:26