EntityFunction.DiffDays原因此函数只能从LINQ到Entities调用

时间:2019-03-06 03:55:54

标签: c# jquery sql linq

我试图将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调用到实体。

1 个答案:

答案 0 :(得分:0)

EntityFunctions为您提供了无法在linq语句之外调用的linq函数。但是,您可以使用DateTime.Subtract方法:

var datedifference = checkHiredDateValue.Subtract(a.Workerdate).Days;

请注意,如果checkHiredDateValuea.Workerdate首先是DateTime?,则需要将它们强制转换为DateTime
旁注:EntityFunctions已过时,请改用System.Data.Entity.DbFunctions.DiffDays