Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择计算字段_C#_Linq_Entity Framework_Compiler Errors_Linq To Entities - Fatal编程技术网

C# 选择计算字段

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

如何在实体框架中选择持续时间作为两个字段之间的差异。以下是相应的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
选择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
});