我的 Sql Server 数据库中有一个名为“视频”的表。我正在使用 LINQ to Entities 从 C# 应用程序访问该数据库中的数据。“视频”表包括名为“RecordingStarted”和“RecordingEnded”的两列,它们只会告诉我们录制视频的开始和结束日期时间。每个视频都有一个唯一的 ID,并针对一个单元进行记录(这里我的意思是单元,例如手机)。
“视频”表示例数据如下:
UnitID VideoID RecordingStarted RecordingEnded
====================================================================
Unit-1 vid1 2012/1/1 14:30:00 2012/1/1 15:45:10
Unit-1 vid2 2012/2/1 12:30:00 2012/1/1 12:50:00
Unit-2 vid3 2012/3/1 14:30:00 2012/3/1 15:45:10
Unit-2 vid4 2012/4/1 12:30:00 2012/4/1 12:40:00
使用 LINQ to Entities 我想计算报告的聚合数据,以及每个单元的聚合数据,例如每个单元记录的视频总时数。
输出应如下所示:
UnitID Total Video Hours
================================================
Unit-1 0.58611
Unit-2 0.41944
我已经创建了以下 LINQ to entity 查询,但它没有给我正确的结果。(我猜小时数除以 3600 时四舍五入为 0)
IQueryable<dynamic> qry = myContext.Videos
.GroupBy(v => new { v.UnitID })
.Select(g => new
{
g.Key.UnitID,
TotalVideoHours = g.Sum(c => SqlFunctions.DateDiff("s", c.RecordingStarted, c.RecordingEnded)/3600)
});
var result = qry.ToList();
另外:我需要将小时数四舍五入为 2 位数(直接来自 Sql Server,以后不使用内存操作)。
我怎样才能做到这一点?请帮忙。