Почему мой IEnumerable из дат не содержит мою дату - PullRequest
3 голосов
/ 18 августа 2010

У меня есть список бразильских праздников, поэтому я получил это:

[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 ]

14 голосов
/ 18 августа 2010

Возвращает значение false, поскольку значение dateTime имеет компонент времени, поэтому это другое время.

Чтобы исключить вызов компонента времени

HolidayDates.Contains(dateTime.Date)

При условии, что вы всегда сохраняете даты в своем IEnumerable с 00:00:00 в качестве компонента времени, тогда это будет работать.

2 голосов
/ 18 августа 2010

В коллекции нет этого значения. Есть подходящая дата, но ваше время 19:00, а время в коллекции - 00:00.

В дополнение к ответу Джеймса, если вы используете:

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

Не имеет значения, есть ли временная составляющая в элементах коллекции. Он всегда будет сравнивать только часть даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...