1

例如,我想减去两个日期并获取时间跨度中的值

TimeSpan duration = Convert.ToDateTime(completeDate).Subtract(Convert.ToDateTime(lastRundate));

这是为了正常实施。如何在 Linq to Entity Framework 中的实体中做到这一点,其中

from job in Jobs
   select new JobEntity
  {                                                  
  Duration =  job.CompleteDate.Value.Subtract(job.NextRunDate.Value)
  };

Jobs 是我的表,CompleteDate 和 NextRunDate 是我的 DataType DateTime 的列名?(因为它允许空值)当我尝试这段代码时,它给了我这个错误

LINQ to Entities 无法识别方法 'System.TimeSpan Subtract(System.DateTime)' 方法,并且此方法无法转换为存储表达式。 请让我知道该怎么做。提前致谢

4

2 回答 2

2

为什么不扩展您的JobEntity模型?

public DateTime NextRunDate { get; set; }
public DateTime CompletedDate { get; set; }
public Timespan Duration
{
    get
    {
        return CompleteDate.Subtract(NextRunDate)
    }
}
于 2012-09-03T12:21:13.380 回答
1

您可以尝试使用EntityFunctions

from job in Jobs
select new JobEntity
{                                                  
    Duration = EntityFunctions.DiffSeconds(job.CompleteDate, job.NextRunDate)
};

为此,您需要using System.Data.Objects;在代码文件中。它将以秒为单位返回时间跨度int

于 2012-09-03T12:42:41.140 回答