2010-08-18 109 views
3

我已經巴西假日的名單,所以我得到了這一點:爲什麼我的日期IEnumerable的不包含我的約會

[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?有什麼更好的方法來處理日期?

回答

14

它返回false,因爲你的dateTime值有一個時間組件,所以它是不同的時間。

要剝離出的時間組件調用

HolidayDates.Contains(dateTime.Date) 

只要你總是存儲的日期在你的IEnumerable與00:00:00隨着時間的成分,那麼這將正常工作。

+0

完美!謝謝! – Custodio 2010-08-18 18:30:06

2

集合中沒有該值。有一個匹配的日期,但你的時間是19:00,而收集時間是00:00。

繼詹姆斯的答案,如果你使用:

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

如果在集合中的項目的時間成分也都不重要。它將只會比較日期部分。

+1

比較日期部分的另一種方法是'HolidayDates.Any(d => d.Date == dateTime.Date)'。或者,如果該集合是'List ',則使用'List '本身上的'Exists'方法而不是LINQ。 – LukeH 2010-08-18 20:41:37

相關問題