我有一个SQL查询,试图将其重写为LINQ。我已经完成了它的左联接方面,但是我无法将它与按组组合在一起。
这是可以正常运行并完美执行的SQL查询:
select count(c.ID) as NoteCount, count(s.StatusHistoryID) as ActionCount, p.DayGoal
from Collector_Profile p
left join StatusHistory s on s.AppUserID = p.AppUserID
and CONVERT(varchar(10), s.StatusDateTZ, 101) = convert(varchar(10), GETDATE(), 101)
left join Claim_Notes c on c.CollectorID = p.ID
and CONVERT(varchar(10),c.PostDateTZ,101) = convert(varchar(10), GETDATE(), 101)
where p.ID = 1338
group by p.DayGoal
到目前为止,我对LINQ查询的了解如下:
var query = from p in _context.Collector_Profile
join s in _context.StatusHistory on p.AppUserID equals s.AppUserID into gs
join c in _context.Claim_Notes on p.ID equals c.CollectorID into gc
from s in gs.DefaultIfEmpty()
from c in gc.DefaultIfEmpty()
where p.ID == CollectorID
group p by p.DayGoal into grouped
但是我不知道如何处理日期比较以这种方式将日期截断,并且我也不知道如何从查询中选择结果。有人可以解释如何完成此任务吗?
答案 0 :(得分:0)
您可以使用DbFunctions.TruncateTime方法仅比较日期部分。
DbFunctions.TruncateTime(s.StatusDateTZ)