Запрос LINQ с LEFT JOIN возвращает не ожидаемый результат - PullRequest
0 голосов
/ 14 февраля 2012

Пожалуйста, помогите мне преобразовать этот запрос в Linq в Entities.

SELECT 
    d.`DepartmentId`,
    d.`ParentDepartmentId`,
    d.`LeftKey`,
    d.`RightKey`,
    udp.`UserId`,
    udp.`IsAllowed` 
FROM
    Departments AS d 
    LEFT JOIN UserDepartmentPermissions AS udp 
        ON udp.`DepartmentId` = d.`DepartmentId`
WHERE d.`IsExcluded` = 0

Я извлекаю это:

(from d in Departments
   join udp in UserDepartmentPermissions 
   on d.DepartmentId equals udp.DepartmentId into JoindedDepsUserPermissions
   from udp in JoindedDepsUserPermissions.DefaultIfEmpty()
   where d.IsExcluded == 0
   select  new
     {
      d.DepartmentId,
      d.ParentDepartmentId,
      d.LeftKey,
      d.RightKey,
      udp.UserId,
      udp.IsAllowed
     }).ToList();

Но это не вернет тот же результат ...

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 14 февраля 2012

Попробуйте

var result = Deparments.Where(d => d.IsExcluded == 0)
             .Select(d => new {
                   d.DepartmentId,
                   d.ParentDepartmentId,
                   d.LeftKey,
                   d.RightKey,
                   d.Permissions
                 });

Используйте свойство навигации в Department для доступа к разрешениям

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