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

C# 在日期时间列表中查找最近的日期,c#,asp.net,date,datetime,C#,Asp.net,Date,Datetime,我一直在使用此代码在输入日期之前的列表中查找最近的日期。然而,我最近发现了一个bug,当输入日期与列表中的第一个日期相同时,代码就会崩溃 allDates是日期列表,例如2015年1月1日、2015年5月1日、2015年10月1日 inputDate是用户选择的日期 var closestDate = allDates.Where(x => x < inputDate).DefaultIfEmpty().Max(); var closestDate=allDates.Where(x

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

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

inputDate是用户选择的日期

var closestDate = allDates.Where(x => x < inputDate).DefaultIfEmpty().Max();
var closestDate=allDates.Where(x=>x
当我尝试在列表中选择第一个日期时,例如2015年1月1日,最近的日期显示为空


同样,现在如果我在列表中选择了一个日期,例如,如果列表包含2015年5月1日,而我选择了2015年5月1日,它不会选择2015年5月1日,而是选择列表中较早的日期,那么现在我做了一个肮脏的变通方法,将列表日期中的所有日期减少1

以解决第二个问题。使用
Is
allDates
对SQL表进行查询?是
inputDate
a
DateTime
。您发布的代码中没有任何内容表明正在使用SQL,更不用说清楚它在这里是如何使用的(所有日期的来源
allDates
?结果的目的地?)。如果要将默认值
DateTime
写入SQL数据库,那么这可能不起作用。有关发布有用问题的建议,请参阅和。请编辑您的问题,以便它提供足够的信息,以便有人提供一个好的答案。确保包含准确的错误信息,包括完整堆栈跟踪。更正,我的意思是最近日期为空。错误代码来自我想插入数据库的时间。您能告诉我
5/1/2015
是否代表1月5日或5月1日吗?它是dd/mm/yyyy格式的
var closestDate = allDates
  .Where(x => x <= inputDate)
  .DefaultIfEmpty()
  .Max();