我想在StartDate
和之间的Linq查询中获取所有日期EndDate
.我StartDate
和我EndDate
都是正确的日期,但我的结果不一致.查询中的其他所有内容都有效,而不是日期的比较.我究竟做错了什么?
where (startDate == null || DateTime.Compare((DateTime)startDate, o.FirstAirDate) < 0) && (endDate == null|| DateTime.Compare( o.FirstAirDate, (DateTime)endDate) > 0)
日期显示在范围之外,当我将日期移近时,没有任何显示.例如,如果我从12月21日到26日搜索,我会得到这两个日期之间的结果,但也会显示第27个节目的日期.如果我从12月23日到26日搜索没有显示,即使我在12月21日至26日搜索时看到此范围内的日期显示
如果你想获得的所有实例,其中FirstAirDate
介于startDate
和endDate
(,要么startDate
或endDate
可以为null),他们都是DateTime
你可能想尝试类似的对象:
var objects = MyObjectsList.Where(o => (!startDate.HasValue || o.FirstAirDate >= startDate.Value) && (!endDate.HasValue || o.FirstAirDate <= endDate.Value))
您可以使用简单的比较运算符比较日期,只需.Value
在进行比较时使用可空的DateTime属性 - 在这种情况下,最好先进行空检查.