我想减去两个日期并在Timespan for Example中获取值
TimeSpan duration = Convert.ToDateTime(completeDate).Subtract(Convert.ToDateTime(lastRundate));
这适用于正常实施。 HOw可以在Linq to Entities in Entity Framework中做到这一点
from job in Jobs
select new JobEntity
{
Duration = job.CompleteDate.Value.Subtract(job.NextRunDate.Value)
};
乔布斯是我的桌子,CompleteDate& NextRunDate是我的DataType DateTime的列名? (因为它允许空值) 当我尝试这段代码时,它给了我这个错误
LINQ to Entities无法识别方法'System.TimeSpan Subtract(System.DateTime)'方法,并且此方法无法转换为商店表达式。 请告诉我如何解决这个问题。 提前谢谢
答案 0 :(得分:2)
为什么不扩展您的JobEntity
型号?
public DateTime NextRunDate { get; set; }
public DateTime CompletedDate { get; set; }
public Timespan Duration
{
get
{
return CompleteDate.Subtract(NextRunDate)
}
}
答案 1 :(得分:1)
您可以尝试使用EntityFunctions:
from job in Jobs
select new JobEntity
{
Duration = EntityFunctions.DiffSeconds(job.CompleteDate, job.NextRunDate)
};
您的代码文件中需要using System.Data.Objects;
。它会以int
为单位返回以秒为单位的时间跨度。
答案 2 :(得分:0)
您可以在结果对象上调用AsEnumerable()
,然后在IEnumerable-Object上进行减法。
var jobs = Jobs.AsEnumerable().Select(j => new JobEntity
{
Duration = j.CompleteDate.Value.Subtract(j.NextRunDate.Value)
});