Я предполагаю, что это пункт where
, который вводит вас в заблуждение.Не забывайте, что cc
и ca
могут быть нулевыми.Попробуйте изменить предложение where
на:
where (cc == null || !cc.IsDeleted) && (ca == null || !ca.IsDeleted)
Затем вам также может понадобиться изменить проекции, в которых вы используете cc
и ca
, на:
CDP = cc == null ? 0 : cc.AltAmount,
Actual = ca == null ? 0 : ca.ActualAmount
I потенциальноЛучшая альтернатива существующему предложению where
состоит в том, чтобы поместить в объединение проверку для IsDeleted
:
join al in this.Context.Actuals.Where(x => !x.IsDeleted)
on ytl.Id equals al.AlteredTargets.YearlyTargetId into cal
и то же самое для другого.Обратите внимание, что это меняет смысл запроса, если существуют фактические значения do , но все они удалены.Я подозреваю, что это меняет то, что вы хотите, чтобы поведение было, хотя ...