我试图将SQL查询转换为LINQuery
,case when DATEDIFF(day, isnull(a.NewWorkerDate,a.Workerdate), a.Workerdate)=0 then
'NEWWORKER' ELSE 'OLDWORKER' End as WorkerType
尝试了另一套Linq:
var checkNewDateValue = a.NewWorkerDate!= null ? a.NewWorkerDate: appInfo.Workerdate;
var datedifference = EntityFunctions.DiffDays(checkHiredDateValue, a.Workerdate);
但会产生如下错误:
异常:System.NotSupportedException:此函数只能是 从LINQ调用到实体。
答案 0 :(得分:0)
EntityFunctions
为您提供了无法在linq语句之外调用的linq函数。但是,您可以使用DateTime.Subtract
方法:
var datedifference = checkHiredDateValue.Subtract(a.Workerdate).Days;
请注意,如果checkHiredDateValue
或a.Workerdate
首先是DateTime?
,则需要将它们强制转换为DateTime
。
旁注:EntityFunctions
已过时,请改用System.Data.Entity.DbFunctions.DiffDays
。