У меня есть такой SQL-код:
select *
from [groups]
where Id in (select GroupId from groupUsers where UserId = @UserId)
Я хочу сгенерировать лямбда-код, который возвращает результат точно так же, как приведенный выше код:
_context.Groups.where(g => g.Id == ...???)
Отмечайте только те технологии, в которых вы хотите получить ответ.
Или, возможно, _context.groupUsers.Where(gu => gu.UserId == userId).Select(gu => gu.group)
, если отношение groupUsers
к group
определено в вашей модели. Скорее всего, это будет преобразовано в запрос JOIN
. Если вам действительно нужен запрос WHERE ... IN (...)
(а не JOIN
или EXISTS(...)
), вам может понадобиться что-то вроде более подробного _context.Groups.Where(g => _context.groupUsers.Where(gu => gu.UserId == userId).Select(gu => gu.GroupId).Contains(g.Id))
.
Я нашел правильный код. это:
_context.Groups.where(g => _context.GroupUsers.Any(u => u.GroupId == g.Id && u.UserId == @UserId))
С уважением к Рэйчел!
_context.Groups.where(g => groupUsers.Any(q => q.GroupId == g.Id && q=>q.UserId == @UserId))