Запрос отношения «многие ко многим» с LINQ - PullRequest
0 голосов
/ 16 февраля 2012

Я использую EF 4.1, где три таблицы отображаются в отношении m-n. Я новичок в Linq, так что это будет легко для большинства из вас.

Таблицы: Пользователи -> Users_Rights_Map -> Права

... классический м-н.

Я бы хотел найти всех пользователей, которые имеют RightID, например, 1.

  var r = from u context.Users 
  where u.Rights.Select(r => r.RightID == 1)
  select u;

... не работает.

Как выглядит правильный запрос LINQ?

Ответы [ 2 ]

4 голосов
/ 16 февраля 2012

Ваш синтаксис запроса неправильный (in отсутствует в вашем запросе), и вы должны использовать некоторую условную функцию для создания условия, не используя select.

var r = from u in context.Users 
  where u.Rights.Any(r => r.RightID == 1)
  select u;

Редактировать: для запуска и обучения linq, я думаю, вам будет приятно посмотреть 101 пример linq .Для Any Вы можете увидеть квантификаторы, есть примеры, например, Any, All.Специально ваш случай включен там.

4 голосов
/ 16 февраля 2012

Попробуйте

  var users = from u in context.Users 
  where u.Rights.Any(r => r.RightID == 1)
  select u;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...