我想知道是否有更好/更简单的方法来按生日加载用户。
我有一个用户实例,它具有属性,包括这个:
public DateTime? BirthDate { get; set; }
我想要做的是加载从一个日期到另一个日期的用户:
public IEnumerable<User> LoadUsersByBirthday(DateTime from, DateTime into)
我不关心生日年份,例如,如果我有 3 个生日用户:
- 日期时间(1991, 3, 20);
- 日期时间(1990, 4, 25);
- 日期时间(1989, 3, 10);
LoadUsersByBirthday(new DateTime(2990, 3, 1), new DateTime(3013, 4, 15))
应该返回 2 个用户 - 第一个和第三个。
我的方法如下所示:
public IEnumerable<User> LoadUsersByBirthday(DateTime from, DateTime into)
{
var days = DateTime.DaysInMonth(from.Year, from.Month);
var u1 = _unit.User.Load(u => ((DateTime) (u.BirthDate)).Month == from.Month
&& ((DateTime) (u.BirthDate)).Day >= from.Day
&& ((DateTime) (u.BirthDate)).Day <= days);
var u2 = _unit.User.Load(u => ((DateTime) (u.BirthDate)).Month > from.Month
&& ((DateTime) (u.BirthDate)).Month < into.Month);
var u3 = _unit.User.Load(u => ((DateTime) (u.BirthDate)).Month == into.Month
&& ((DateTime) (u.BirthDate)).Day <= into.Day);
return u1.Concat(u2).Concat(u3);
}
它有效,但有没有更好/更简单的方法来做到这一点?