如何在LINQ中实现日期加2个月?代码修正咨询
修正LINQ中日期推移2个月的逻辑问题
我来帮你搞定这个问题——你原来的日期推移写法藏着个坑:当ResignLastDate的月份是11月或12月时,直接给月份加2会导致月份值超过12,触发ArgumentOutOfRangeException异常,完全没法正常运行。
正确的日期推移方案
.NET的DateTime类型自带了**AddMonths()**方法,它会自动处理跨年、跨月的边界情况(比如11月加2个月会变成次年1月,12月加2个月变成次年2月),根本不用你手动去算年份和月份,省心又靠谱。
修正后的完整代码
DateTime dtFrom = DateTime.Now; var Resignuser = db.Employees .Where(m => !m.IsDeleted && m.IsActive && m.IsResign == true && m.ResignLastDate.Value.AddMonths(2) >= dtFrom && m.StatusId != 3 && m.StatusId != 4) .Select(m => new { Display = m.FirstName + " " + m.LastName, GUID = m.GUID }) .ToList();
关键修改说明
- 替换了错误的手动构造日期逻辑:把
new DateTime(m.ResignLastDate.Value.Year,m.ResignLastDate.Value.Month + 2 , 1)改成m.ResignLastDate.Value.AddMonths(2),确保日期计算安全且准确 - 移除了
Where条件开头多余的&&,避免语法编译错误
内容的提问来源于stack exchange,提问作者Raju Parmar
相关产品推荐
相关产品推荐

