Я пытаюсь отследить сбой в каком-то существующем коде в унаследованном веб-приложении. Я отследил это до одного выражения LINQ:
var projInfo = (from v in context.TPM_PROJECTVERSION
join p in context.TPM_PROJECT on v.PROJECTID equals p.PROJECTID
join pto in context.TPM_USER on v.TPM_USER1.USERID equals pto.USERID
join pt in context.TPM_PROJECTTYPES on p.PROJECTTYPEID equals pt.PROJECTTYPEID
where v.PROJECTID == projectId && v.VERSIONID == versionId
select new
{
ProjectName = v.NAME,
ProjectType = pt.SHORTNAME,
ProjectDesc = v.DESCRIPTION,
BusinessLaunchData = p.BUSINESSLAUNCHDATE,
BusinessSponsor = (v.TPM_USER3.FIRSTNAME + " " + v.TPM_USER3.LASTNAME),
PrimaryTrainingOwner = (pto.FIRSTNAME + " " + pto.LASTNAME)
}).First();
Ошибка «Последовательность»не содержит элементов ", которые я проследил до этой строки:
join pto in context.TPM_USER on v.TPM_USER1.USERID equals pto.USERID
Если USER1 равен нулю, строка не возвращается.Вместо этого мне нужно, чтобы PrimaryTrainingOwner был просто нулевым или пустым.По сути, мне нужно сделать LEFT JOIN и проверить это при настройке PrimaryTrainerOwner.Есть ли способ обновить это выражение LINQ для обработки этого случая?Спасибо!