У меня есть запрос, который работает хорошо, но мне нужно присоединиться к контекстной таблице, управляемой БД, которая содержит значения для идентификатора
У меня было 25 записей, но теперь только 3 записи в качествеобъединение существует только в 3 записях. Это единственная строка, которую я добавил
join roleTypes in context.ContactRoleTypes on personRole.ContactRoleTypeId equals roleTypes.ContactRoleTypeId
Я добавил в выделенную строку ContactType = p == null ? string.Empty : p.ContactRoleName,
, чтобы показать результаты
findPersonResultsViewModelNew = from azed in findPersonViewModel.findPersonResultsViewModel
join personRole in personContactRoles on azed.PersonID equals personRole.PersonId
join roleTypes in context.ContactRoleTypes on personRole.ContactRoleTypeId equals roleTypes.ContactRoleTypeId
into r1
from p in r1.DefaultIfEmpty()
select
new FindPersonResultsViewModel
{
PersonID = azed.PersonID,
AZEDID = azed.AZEDID,
FirstName = azed.FirstName,
MiddleName = azed.MiddleName,
LastName = azed.LastName,
ContactRoleTypeId = p == null ? 0 : p.ContactRoleTypeId,
ContactType = p == null ? string.Empty : p.ContactRoleName,
IsInContactManager = p == null ? false : true,
ExistInContactManager = p == null ? false : true,
ActionType = p == null ? false : true,
};
Как выМожно видеть, что 3 источника, 2 находятся в памяти, и затем я присоединяюсь к context.ContactRoleTypes, но это должно быть левое внешнее соединение, из которого кажется, что в LINQ вы должны сделать что-то вроде from w in r2.DefaultIfEmpty()
?
ОБНОВЛЕНИЕ:
Так что, если я сделаю это
join roleTypes in context.ContactRoleTypes on personRole.ContactRoleTypeId equals roleTypes.ContactRoleTypeId into r2
from p in r1.DefaultIfEmpty()
from g in r2.DefaultIfEmpty()
Я получу ошибку personRole does not exist in the current context
.Если я поменяю их с равных, то у обеих сторон будет ошибка.