我使用C#的MVC,我需要得到的用户在未来20天内与谁过生日的详细信息。使用linq to sql查询,它只想比较日期和月份,而不是年份,为了获取在接下来的20天内过生日的用户,任何人都可以帮助我使用linq to sql查询来获取在接下来的20天内过生日的用户。
提前谢谢你,
发布于 2009-10-22 14:52:31
为什么不将生日存储在本地变量中,将年份更改为当前年份,然后检查它是否在接下来的20天内发生?
public bool IsBirthdayInNextTwentyDays(DateTime actualBirthday)
{
var birthday = actualBirthday;
birthday.Year = DateTime.Now.Year;
return birthday > DateTime.Now && birthday < DateTime.Now.AddDays(20);
}然后在Linq中类似于:
user.Where(u => IsBirthDayInNextTwentyDays(u.Birthday));仁慈,
丹
发布于 2012-10-27 19:55:33
这是一个很好的解决方案。
public bool IsBirthdayInNextTwentyDays(DateTime today,DateTime actualBirthday,int days)
{
if ((actualBirthday.DayOfYear - today.DayOfYear >= 0) )
{
return (actualBirthday.DayOfYear - today.DayOfYear <= days);
}
else
{
return (actualBirthday.DayOfYear +365 - today.DayOfYear <= days);
}
}SPS在共享中取胜
发布于 2009-10-31 04:10:21
这里有一种方法。我真的不喜欢它先计算“今年”的生日,如果它已经过去了,再纠正它,但我想不出一个更好的方法在短时间内。
from p in Persons
let thisYearsBirthday = p.Birthdate.AddYears(today.Year - p.Birthdate.Year)
// OR this way, although the SQL it produces it a little less simple
// let thisYearsBirthday = new DateTime(today.Year, p.Birthdate.Month, p.Birthdate.Day)
let nextBirthday = (thisYearsBirthday >= today) ? thisYearsBirthday : thisYearsBirthday.AddYears(1)
where nextBirthday >= today && nextBirthday <= today.AddDays(20)
select new { /* ... */ };https://stackoverflow.com/questions/1605382
复制相似问题