使用 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
});
我想将以下 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
});