【问题标题】:Finding closest date in a datetime list在日期时间列表中查找最近的日期
【发布时间】:2015-02-08 08:05:03
【问题描述】:

我一直在使用此代码在输入日期之前的列表中查找最接近的日期。但是我最近发现了一个错误,当输入日期与列表中的第一个日期相同时,代码会崩溃。

allDates 是日期列表,例如。 2015 年 1 月 1 日、2015 年 5 月 1 日、2015 年 10 月 1 日

inputDate 是用户选择的日期

var closestDate = allDates.Where(x => x < inputDate).DefaultIfEmpty().Max();

当我尝试选择列表中的第一个日期时,例如 2015 年 1 月 1 日,最接近的日期为空

现在如果我在列表中选择一个日期,例如,如果列表包含 2015 年 5 月 1 日并且我选择 2015 年 5 月 1 日,它不会选择 2015 年 5 月 1 日,而是选择更早的日期列表,现在我做了一个肮脏的解决方法,将列表日期中的所有日期减少 1

【问题讨论】:

  • allDates 是对 SQL 表的查询吗? inputDateDateTime
  • 您发布的代码中没有任何内容表明正在使用 SQL,更不用说清楚 如何 在这里使用它(allDates? 的来源结果?)。如果您将DateTime 的默认值写入SQL 数据库,那可能行不通。有关发布有用问题的建议,请参阅 stackoverflow.com/help/mcvestackoverflow.com/help/how-to-ask。请编辑您的问题,以便为某人提供足够的信息以提供好的答案。确保包含准确的错误信息,包括完整的堆栈跟踪。
  • Correction ,我的意思是最近的日期是空的。错误代码来自我想插入数据库时​​
  • 您能告诉我5/1/2015 代表的是 1 月 5 日还是 5 月 1 日?
  • dd/mm/yyyy 格式

标签: c# asp.net date datetime


【解决方案1】:

要解决第二个问题,请使用 &lt;= 而不是 &lt;a

var closestDate = allDates
  .Where(x => x <= inputDate)
  .DefaultIfEmpty()
  .Max();

第一个问题可能是无效的inputDate

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2014-03-12
    • 2012-08-18
    • 2019-06-30
    相关资源
    最近更新 更多