Linq实体查询比较日期的天

时间:2019-02-14 05:00:31

标签: c# linq

我有一个表来保存用户的生日,我想找到今天出生的用户。

 _db.BirthdayReminders.Where(m => DbFunctions.DiffDays(m.Birthday,today.Date)==0 && ).ToList();

但是要找到今年的生日。

1 个答案:

答案 0 :(得分:0)

仅检查DayMonth怎么办?:

_db.BirthdayReminders
    .Where(m => m.Birthday.Day == today.Day && m.Birthday.Month == today.Month)
    .ToList();

我不确定您要如何对待2月29日出生的人。显然,有些人在2月28日庆祝生日,其他人则在3月1日庆祝生日。我不确定您会如何处理。

在这种情况下,我的建议是(如果您在2月28日庆祝他们的生日):

  1. 确定是否是a年。如果不是,请继续执行2。
  2. 确定他们的生日是2月29日,然后在2月28日或3月1日对true进行评估,或者两者兼而有之。

可以写成:

_db.BirthdayReminders
    .Where(m => (m.Birthday.Day == today.Day && m.Birthday.Month == today.Month)
        || (!isLeapYear && m.Birthday.Day == 29 && m.Birthday.Month == 2 && today.Day == 28 && today.Month == 2))
    .ToList();