比较日期我的日期为空

Aar*_*ron 4 c# linq

我想在StartDate和之间的Linq查询中获取所有日期EndDate.我StartDate和我EndDate都是正确的日期,但我的结果不一致.查询中的其他所有内容都有效,而不是日期的比较.我究竟做错了什么?

where (startDate == null || DateTime.Compare((DateTime)startDate,
o.FirstAirDate) < 0) && (endDate == null|| DateTime.Compare(
o.FirstAirDate, (DateTime)endDate) > 0)
Run Code Online (Sandbox Code Playgroud)

日期显示在范围之外,当我将日期移近时,没有任何显示.例如,如果我从12月21日到26日搜索,我会得到这两个日期之间的结果,但也会显示第27个节目的日期.如果我从12月23日到26日搜索没有显示,即使我在12月21日至26日搜索时看到此范围内的日期显示

Bar*_*cer 6

如果你想获得的所有实例,其中FirstAirDate介于startDateendDate(,要么startDateendDate可以为null),他们都是DateTime你可能想尝试类似的对象:

var objects = MyObjectsList.Where(o => 
     (!startDate.HasValue || o.FirstAirDate >= startDate.Value) 
  && (!endDate.HasValue || o.FirstAirDate <= endDate.Value))
Run Code Online (Sandbox Code Playgroud)

您可以使用简单的比较运算符比较日期,只需.Value在进行比较时使用可空的DateTime属性 - 在这种情况下,最好先进行空检查.