首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取生日提醒Linq查询忽略年份

获取生日提醒Linq查询忽略年份
EN

Stack Overflow用户
提问于 2009-10-22 14:37:56
回答 5查看 3.8K关注 0票数 5

我使用C#的MVC,我需要得到的用户在未来20天内与谁过生日的详细信息。使用linq to sql查询,它只想比较日期和月份,而不是年份,为了获取在接下来的20天内过生日的用户,任何人都可以帮助我使用linq to sql查询来获取在接下来的20天内过生日的用户。

提前谢谢你,

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-22 14:52:31

为什么不将生日存储在本地变量中,将年份更改为当前年份,然后检查它是否在接下来的20天内发生?

代码语言:javascript
复制
public bool IsBirthdayInNextTwentyDays(DateTime actualBirthday)
{
var birthday = actualBirthday;
birthday.Year = DateTime.Now.Year;

return birthday > DateTime.Now && birthday < DateTime.Now.AddDays(20);
}

然后在Linq中类似于:

代码语言:javascript
复制
user.Where(u => IsBirthDayInNextTwentyDays(u.Birthday));

仁慈,

票数 4
EN

Stack Overflow用户

发布于 2012-10-27 19:55:33

这是一个很好的解决方案。

代码语言:javascript
复制
 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在共享中取胜

票数 1
EN

Stack Overflow用户

发布于 2009-10-31 04:10:21

这里有一种方法。我真的不喜欢它先计算“今年”的生日,如果它已经过去了,再纠正它,但我想不出一个更好的方法在短时间内。

代码语言:javascript
复制
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 { /* ... */ };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1605382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档