Linq选择昨天的日期

Tom*_*len 3 c# linq asp.net datetime

我已经达到了这个目的:

DateTime yesterday = DateTime.Today.AddDays(-1);
YesterdaysRegistrations = db.tblForumAuthors.Where(c => c.Join_date == yesterday).Count();
Run Code Online (Sandbox Code Playgroud)

肯定会有昨天的加入日期的记录,但这会一直返回0!任何人都可以告诉我,我是否正确这样做?

Fem*_*ref 9

AddDays保持小时/分钟/秒组件.您必须使用(如果c.Join_date只是日期组件):

DateTime yesterday = DateTime.Today.AddDays(-1).Date;
Run Code Online (Sandbox Code Playgroud)

否则,您比较范围:

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)
Run Code Online (Sandbox Code Playgroud)


ang*_*son 5

您不必取消时间,只需确保不进行精确匹配即可。

试试这个:

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();
Run Code Online (Sandbox Code Playgroud)