C# 选择计算字段
如何在实体框架中选择持续时间作为两个字段之间的差异。以下是相应的SQL查询:C# 选择计算字段,c#,linq,entity-framework,compiler-errors,linq-to-entities,C#,Linq,Entity Framework,Compiler Errors,Linq To Entities,如何在实体框架中选择持续时间作为两个字段之间的差异。以下是相应的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 选择In
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
选择InitiateTime、StartTime、EndTime、Ano、Bno、datediff(s、StartTime、EndTime)作为持续时间
来自[NEPALIVR2].[dbo].[CDR]
其中StartTime>=startDate和StartTime=startDate&&u.InitiateTime看起来您的问题不在差异计算中,而是在从查询返回的匿名类型中。将其更改为CDR
对象:
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
});
如果我创建了新的CDR,那么错误是CDR中没有持续时间的定义。
@CodeManiac您是使用CodeFirst还是映射到现有数据库?@CodeManiac嗯,实体是作为分部类生成的。使用Duration
属性创建部分CDR类。那就行了。顺便说一句,您还可以将持续时间计算移动到该属性。只需确保您的部分CDR类定义在与生成的CDR相同的命名空间中
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
});