linq版本的sql查询,具有多个联接和分组依据

iklwldmw  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(282)

我有一个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

但我不知道如何处理以这种方式截短日期的日期比较,也不知道如何从查询中选择返回的结果。有人能解释一下怎么完成这个吗?

gg58donl

gg58donl1#

可以使用dbfunctions.truncatetime方法仅比较日期部分。

DbFunctions.TruncateTime(s.StatusDateTZ)

相关问题