使用 JOIN、GROUP BY 和 SUM 将 SQL 映射到 Entity Framework 查询

Map SQL with JOIN, GROUP BY, and SUM to Entity Framework query

我想将以下 SQL 映射到 EF 查询。找了几个类似的题目,还是没能实现映射。 {0}...{2} 是 SQL 个参数。

SELECT TaskGroup.Project AS Project
SUM(Datediff(minute, WorkLog.StartTime, WorkLog.EndTime)) / 60 AS Hours
FROM WorkLog INNER JOIN TaskDefinition ON WorkLog.TaskDefinitionID = TaskDefinition.ID
INNER JOIN TaskGroup ON TaskDefinition.TaskGroupID = TaskGroup.ID
WHERE WorkLog.EmployeeID = {0} AND WorkLog.Status = 5 AND
   WorkLog.StartTime >= {1} AND WorkLog.EndTime < {2}
GROUP BY TaskGroup.Project

这个呢?

var query = (from wl in WorkLog
            join td in TaskDefinition on wl.TaskDefinitionID equals td.ID
            join tg in TaskGroup on td.TaskGroupID equals tg.ID
            where wl.EmployeeID == { 0} && wl.Status == 5 
                && wl.StartTime >= { 1} && wl.EndTime < { 2}
            select new
            {
                Project = tg.Project,
                StartTime = wl.StartTime,
                EndTime = wl.EndTime
            })
            .GroupBy(o => o.Project)
            .Select(g => new
            {
                Project = g.Key,
                Hours = g.Sum(o => (o.EndTime - o.StartTime).Minutes) / 60
            });