Linq выберите, где дата вчера - PullRequest
3 голосов
/ 14 апреля 2011

Я дошел до этого:

DateTime yesterday = DateTime.Today.AddDays(-1);
YesterdaysRegistrations = db.tblForumAuthors.Where(c => c.Join_date == yesterday).Count();

Там определенно есть записи с вчерашней датой присоединения, но это всегда возвращает 0! Может кто-нибудь сказать мне, правильно ли я это делаю?

Ответы [ 2 ]

9 голосов
/ 14 апреля 2011

AddDays содержит компоненты Час / Минута / Секунда.Вы также должны использовать (если c.Join_date является только компонентом даты):

DateTime yesterday = DateTime.Today.AddDays(-1).Date;

В противном случае вы сравниваете диапазон:

DateTime yesterday = DateTime.Today.AddDays(-1).Date;
DateTime yesterdayEnd = DateTime.Today.Date.AddSeconds(-1);
db.tblForumAuthors.Where(c => c.Join_date >= yesterday && c.Join_date < yesterdayEnd)
4 голосов
/ 14 апреля 2011

Вам не нужно сокращать время, вы просто должны убедиться, что вы не делаете точное совпадение.

Попробуйте вместо этого:

DateTime today = DateTime.Today; // read once, avoid "odd" errors once in a blue moon
DateTime yesterday = today.AddDays(-1);
YesterdaysRegistrations = db.tblForumAuthors.Where(
    c => c.Join_date >= yesterday
      && c.Join_date < today).Count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...