比较 LINQ 中的日期会出现错误 - 方法无法转换为存储表达式

Det*_*ium 0 c# linq entity-framework

我试图找出HourRegistrations其中

HourRegistration.Date == //withint the last 3 months
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样(在网上找到了这个解决方案,但它似乎不起作用)

var dbHourRegs = db.HourRegistration
        .Where(x => DateTime.Compare(x.Date, DateTime.Today.AddMonths(-3)) >= 0)
        .ToList();
Run Code Online (Sandbox Code Playgroud)

但正如标题所说,我不断收到此错误:

LINQ to Entities 无法识别“System.DateTime AddMonths(Int32)”方法,并且该方法无法转换为存储表达式。

该如何进行呢?或者更确切地说,我如何完成这项任务?

Lal*_*ali 5

DateTime.Compare 方法是 C# 方法,无法转换为 sql 查询。DateTime.Now.AddMonths由于同样的原因也会产生错误

你可以这样做

DateTime YourDate = DateTime.Now.AddMonths(-3);
var dbHourRegs = db.HourRegistration
        .Where(x => x.Date >= YourDate)
        .ToList();
Run Code Online (Sandbox Code Playgroud)