在日期时间列表中查找最近的日期

Finding closest date in a datetime list

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

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

inputDate 是用户 selects

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

当我尝试 select 列出列表中的第一个日期时,例如 1/1/2015 最近的日期是空的

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

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

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

第一期会不会无效inputDate