LINQ to Entities, эквивалентные SQL NOT IN - PullRequest
0 голосов
/ 29 июля 2011

У меня проблемы с преобразованием следующего оператора SQL в LINQ to Entity.

SELECT     Name
FROM       Role
WHERE      ID NOT IN (SELECT Role_ID FROM UserRoleRelation WHERE User_ID = 11)

Три таблицы и их столбцы:

  • Пользователь (ID, Uesrname)
  • Роль (ID, имя)
  • UserRoleRelation (ID, ID_пользователя, Role_ID)

Я попробовал следующее

from r in db.Roles
where !db.UserRoleRelations.Any(p => p.User_ID == UserID)
select r

Есть предложения?

Мангеш был очень близко, но он указал мне верное направление.
Это код, который работал.

(from r in db.Roles
where !(from y in db.UserRoleRelations where y.User_ID == UserID select y.Role_ID).Contains(r.ID) 
select r);

Спасибо за помощь.

1 Ответ

1 голос
/ 29 июля 2011

Вот, пожалуйста,

   var result = (from r in db.Roles
                 where !(from y in db.UserRoleRelations
                         where y.User_Id == UserID
                         select y.User_ID).Contains(r.role)
                 select r.Name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...