为什么我的IEnumerable日期不包含我的日期

时间:2010-08-18 18:24:58

标签: c# date

我有一份巴西假期清单,所以我得到了这个:

[0] {01/01/2010 00:00:00}   System.DateTime
[1] {16/02/2010 00:00:00}   System.DateTime
[2] {02/04/2010 00:00:00}   System.DateTime
[3] {04/04/2010 00:00:00}   System.DateTime
[4] {21/04/2010 00:00:00}   System.DateTime
[5] {01/05/2010 00:00:00}   System.DateTime

[6] {03/06/2010 00:00:00}   System.DateTime

[7] {07/09/2010 00:00:00}   System.DateTime
[8] {12/10/2010 00:00:00}   System.DateTime
[9] {02/11/2010 00:00:00}   System.DateTime
[10]{15/11/2010 00:00:00}   System.DateTime
[11]{25/12/2010 00:00:00}   System.DateTime

在方法中,我收到dateTime = {03/06/2010 19:00:00}并致电:

HolidayDates.Contains(dateTime)

为什么它返回false?处理日期的更好方法是什么?

2 个答案:

答案 0 :(得分:14)

它返回false,因为你的dateTime值有一个时间组件,所以它是一个不同的时间。

删除时间组件调用

HolidayDates.Contains(dateTime.Date)

如果您始终将IEnumerable中的日期存储在00:00:00作为时间组件,那么这将有效。

答案 1 :(得分:2)

该集合中没有该值。匹配日期,但您的时间是19:00,而集合中的时间是00:00。

如果您使用,请继续James的回答:

HolidayDates.Select(d => d.Date).Contains(dateTime.Date)

如果集合中的项目中有时间组件,则无关紧要。它总是只比较日期部分。