Использование нескольких операторов LINQ с into для DefaultIfEmpty () левого внешнего соединения не работает - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь использовать оператор "into" с DefaultIfEmpty () для левого внешнего соединения, но когда я пытаюсь присоединиться к 3-й коллекции, ему это не нравится (не вижу / не использую / не вижуэто)

Это не похоже на personRole в строке ниже

join roleTypes in roles on personRole.ContactRoleTypeId equals roleTypes.ContactRoleTypeId into r2

запрос:

findPersonResultsViewModelNew =
         from azed in findPersonViewModel.findPersonResultsViewModel
         join personRole in personContactRoles on azed.PersonID equals personRole.PersonId into r1
         join roleTypes in roles on personRole.ContactRoleTypeId equals roleTypes.ContactRoleTypeId into r2
         from p in r1.DefaultIfEmpty()
         from g in r2.DefaultIfEmpty()
         select
         //…. other code 

1 Ответ

1 голос
/ 26 июня 2019

Измените порядок ваших заявлений.При выполнении левого соединения вы должны немедленно следовать за join с новым from ... DefaultIfEmpty():

findPersonResultsViewModelNew =
         from azed in findPersonViewModel.findPersonResultsViewModel
         join personRole in personContactRoles on azed.PersonID equals personRole.PersonId into prj
         from personRole in prj.DefaultIfEmpty()
         join roleTypes in roles on personRole.ContactRoleTypeId equals roleTypes.ContactRoleTypeId into rtj
         from roleTypes in rtj.DefaultIfEmpty()
         select
...