C# 如何将年份添加到LINQ到实体查询?
我试图使用LINQtoEntities在SQL中查询一个表,并在日期列中添加一年 我尝试了以下查询:C# 如何将年份添加到LINQ到实体查询?,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,我试图使用LINQtoEntities在SQL中查询一个表,并在日期列中添加一年 我尝试了以下查询: data = data.Where(x => x.DueDate.Value.AddYears(1) >= DateTime.Now); 执行此操作时,我会收到以下错误消息: LINQ to Entities无法识别方法“System.DateTime AddYears(Int32)”方法,并且无法将此方法转换为存储表达式 我做了一些研究,似乎大多数人通过分离查询并使用一个变量(然
data = data.Where(x => x.DueDate.Value.AddYears(1) >= DateTime.Now);
执行此操作时,我会收到以下错误消息:
LINQ to Entities无法识别方法“System.DateTime AddYears(Int32)”方法,并且无法将此方法转换为存储表达式
我做了一些研究,似乎大多数人通过分离查询并使用一个变量(然后输入到表达式中)来解决这个问题
我不能这样做,因为我需要将年份添加到我的数据lambda表达式中,并且不能将它们分开
有没有一种简单的方法可以解决这个问题,或者有没有一种方法可以创建一个伪列来添加一年,而不实际创建一个表列?我试图避免仅仅为了在显示的日期上添加一年而创建一个完整的新SQL列
谢谢您的帮助。您可以做相反的操作,从
日期时间中减去1年。现在
将其用作比较值
var yearAgo = DateTime.Now.AddYears(-1);
data = data.Where(x => x.DueDate >= yearAgo);
旁注
DueDate
可能没有时间分量。您可以使用.Date
(DateTime.Now.Date.AddYears(-1);
)或.Today
而不是.Now
(DateTime.Today.AddYears(-1);
)删除时间组件这很有效,谢谢!