我想计算EF中每个人的总小时数。我可以在 MYSQL 语句中计算总小时数,但我对 EF 有问题。
这是 SQL 语句
SELECT name, SEC_TO_TIME(Sum(TIME_TO_SEC(TIMEDIFF(ClockOutTime,ClockInTime))))
FROM Attendance
GROUP BY name
我想将上述语句转换为 EF。
这就是我到目前为止在控制器中所拥有的
var model = db.Attendances
.GroupBy(a => a.name)
.Select(g => new AttendanceViewModel
{
name = g.Key,
totalHours = SqlFunctions.DateDiff("seconds",
g.Select( a=> a.ClockInTime),
g.Select(a=>a.ClockOutTime))
}).ToList();
我遇到的问题是 g.Select(a=>a.ClockInTime) 返回 IEnumrable,因此我不能直接使用 SqlFunctions.DateDiff。我该如何解决这个问题?有替代方法吗?