Помогите нормально перенести запрос
Добрейший вечер, на текущий момент у меня имеется такой, полностью функционирующий SQL запрос:
select distinct pt.* from PlannedTasks pt
inner join ClientsTimePeriods ctp on pt.ClientGlobalId = ctp.ClientGlobalId
left join PlannedTasks pt2 on pt.ClientGlobalId = pt2.ClientGlobalId and pt2.StatusCode = 3 and pt2.UpdatedOn > '2021-10-27 18:49'
where pt.StatusCode = 1 and ctp.SendPeriodStart <= '2021-10-28' and ctp.SendPeriodEnd > '2021-10-27 '
and pt2.id is null
Я попытался перенести его в LINQ, получилось примерно так:
var channelGroups = (from pt in _db.PlannedTasks.Distinct()
join ctp in _db.ClientsTimePeriods on pt.ClientGlobalId equals ctp.ClientGlobalId
join pt2 in _db.PlannedTasks on new
{
pt.ClientGlobalId,
StatusCheck = true,
TimeCheck = true
}
equals new
{
pt2.ClientGlobalId,
StatusCheck = pt2.StatusCode == PlannedTaskStatusCode.Sent,
TimeCheck = pt2.UpdatedOn > DateTime.Now.AddHours(-10)
}
into re
from res in re.DefaultIfEmpty()
where
pt.StatusCode == PlannedTaskStatusCode.Awaiting
&& ctp.SendPeriodStart <= DateTime.Now && ctp.SendPeriodEnd > DateTime.Now
select new
{
pt
});
В итоге получается 2 варианта: Либо огромное количество дупликатов(Из-за выражения "pt2.UpdatedOn > '2021-10-27 18:49'"), вместо того, чтобы убирать значения, она добавляет дупликаты. Либо вообще не выводятся никакие значения, когда в SQL запросе они есть.