LINQ DB算术必须具有通用类型(日期比较

use*_*671 2 c# sql linq asp.net-mvc

我试图从使用开始和结束日期的最高天数的数据库中获取记录.我一直在Entity.dll中得到一个System.Argument.Exception.

错误说明:

{"DbArithmeticExpression arguments must have a numeric common type."}
Run Code Online (Sandbox Code Playgroud)

这是我的LINQ声明:

var maxDaysTask = whseTasks.Where(x => x.CompDate != null && x.TaskDate != null).Max(x => ((DateTime)x.TaskDate - (DateTime)x.CompDate).TotalDays);
Run Code Online (Sandbox Code Playgroud)

CompDate(结束日期)和TaskDate(开始日期)都是可以为空的日期时间.有什么建议?

das*_*ght 14

您不能在查询中使用减法:operator -在.NET中重载,但在SQL Server中不重载.

您可以使用它SqlFunctions.DateDiff来实现您正在寻找的效果:

var maxDaysTask = whseTasks
    .Where(x => x.CompDate != null && x.TaskDate != null)
    .Max(x => SqlFunctions.DateDiff("day", x.TaskDate, x.CompDate));
Run Code Online (Sandbox Code Playgroud)

  • @ user3788671哎呀,应该是"天",而不是"天". (2认同)