选择计算字段

本文关键字:字段 计算 选择 | 更新日期: 2023-09-27 18:01:24

如何选择持续时间作为实体框架中两个字段之间的差异。以下是相应的SQL查询:

SELECT InitiateTime, StartTime, EndTime, Ano,Bno,  datediff(s,StartTime,EndTime) as duration
FROM [NEPALIVR2].[dbo].[CDR]
WHERE StartTime >= startDate and StartTime <= endDate order by StartTime desc

LINQ

from u in db.CDRs 
where u.InitiateTime >= startDate && u.InitiateTime <= endDate 
orderby u.InitiateTime descending 
select new
{
   InitiateTime = u.InitiateTime,
   StartTime = u.StartTime,
   EndTime = u.StartTime,
   Ano = u.Ano,
   Bno = u.Bno,
   Duration = (SqlFunctions.DateDiff("mi", u.StartTime, u.EndTime))/360,
};

返回错误:

不能隐式地将类型'System.Linq.IQueryable<AnonymousType#1>'转换为'System.Linq.IQueryable<IVRControlPanel.Models.CDR>'。存在显式转换(您是否缺少强制类型转换?)

选择计算字段

看起来您的问题不是差异计算,而是从查询返回的匿名类型。修改为CDR object:

select new CDR
{
   InitiateTime = u.InitiateTime,
   StartTime = u.StartTime,
   EndTime = u.StartTime,
   Ano = u.Ano,
   Bno = u.Bno,
   Duration = SqlFunctions.DateDiff("mi", u.StartTime, u.EndTime)/360
});