我正在尝试计算过去 10 个月的交易数量。我如何使用 Entity Framework 获得它?
我试着做这个代码:
public ActionResult Test()
{
var Model = db.Transactions
.Where(u => u.TransactionsDate > DateTime.Now.AddMonths(-10))
.Count();
Response.Write(Model);
return null;
}
使用该代码我有这个错误页面:
LINQ to Entities does not recognize the method 'System.DateTime AddMonths(Int32)' method, and this method cannot be translated into a store expression.
LINQ 无法将该方法调用转换为 SQL 表达式。但是您不需要它,您可以只存储该方法调用的值并将该值传递给 LINQ:
var someValue = DateTime.Now.AddMonths(-10);
var model = db.Transactions.Where(u => u.TransactionsDate > someValue).Count();
旁注...这是非常错误的:
Response.Write(model);
return null;
您的方法返回一个 ActionResult
,因此返回一个 ActionResult
。结果应该是什么?例如,如果您从 AJAX 调用此方法并需要 JSON 数据,请将其作为结果返回:
return Json(model);
或者此操作可能需要返回一个 View 以在浏览器中呈现页面?:
return View(model);
您几乎从不直接写入响应,总是返回null
的方法是多余的。
我是一名优秀的程序员,十分优秀!