Как реализовать левое внешнее объединение в Entity Framework - PullRequest
0 голосов
/ 31 марта 2010

У меня следующий запрос SQL: -

select distinct * from dbo.Profiles profiles 
left join ProfileSettings pSet on pSet.ProfileKey = profiles.ProfileKey 
left join PlatformIdentities pId on pId.ProfileKey = profiles.Profilekey

Мне нужно преобразовать его в выражение LinqToEntities. Я пробовал следующее: -

from profiles in _dbContext.ProfileSet
                            let leftOuter = (from pSet in _dbContext.ProfileSettingSet
                                             select new
                                                        {
                                                            pSet.isInternal
                                                        }).FirstOrDefault()
 select new
                                       {
                                           profiles.ProfileKey,
                                           Internal = leftOuter.isInternal,
                                           profiles.FirstName,
                                           profiles.LastName,
                                           profiles.EmailAddress,
                                           profiles.DateCreated,
                                           profiles.LastLoggedIn,                                               
                                       };

Приведенный выше запрос работает нормально, потому что я не рассматривал третью таблицу "PlatformIdentities". Единственное левое внешнее соединение работает с тем, что я сделал выше. Как мне включить PlatformIdentities (3-я таблица)? В основном я хочу перевести SQL-запрос, указанный в начале этого поста (который дает мне именно то, что мне нужно), в LinqToEntities.

Спасибо

1 Ответ

0 голосов
/ 31 марта 2010

Дайте мне знать, если вы хотите выбрать что-то другое, но истинное соединение ниже

  from p in _dbContext.ProfileSet
                join ps in _dbContext.ProfileSettings on p.ProfileKey = ps.ProfileKey  into a
                join pi in _dbContext.PlatformIdentities on p.ProfileKey = pi.ProfileKey  into b

                select new
                {
                   profiles.ProfileKey,
                   profiles.FirstName,
                   profiles.LastName,
                   profiles.EmailAddress,
                   profiles.DateCreated,
                   profiles.LastLoggedIn, 
                   PlatformSettings = a.Select(x=>x),
                   PlatformIdentities = b.Select(y=>y)
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...