У меня есть запрос, который я пытаюсь преобразовать в LINQ. Я просто не могу окунуться в нужное гнездо. Вот запрос в SQL (просто руки типизированных):SQL to LINQ with JOIN и SubQuery
SELECT V.* FROM V
INNER JOIN VE ON V.ID = VE.V_ID
WHERE VE.USER_ID != @USER_ID
AND V.MAX > (SELECT COUNT(ID) FROM VE
WHERE VE.V_ID = V.ID AND VE.STATUS = 'SELECTED')
Ближайший я пришел это:
var query = from vac in _database.Vacancies
join e in _database.VacancyEngagements
on vac.Id equals e.VacancyId into va
from v in va.DefaultIfEmpty()
where vac.MaxRecruiters > (from ve in _database.VacancyEngagements
where ve.VacancyId == v.Id && ve.Status == Enums.VacanyEngagementStatus.ENGAGED
select ve).Count()
... который правильно решает подзапрос из моего SQL заявления. Но я хочу еще больше ограничить возвращенные строки V только теми, где текущий пользователь не имеет связанной строки VE.
Вы можете поместить 'where e.UserId! = UserId' прямо перед ключевым словом' to'. –
@GertArnold, что приводит к синтаксической ошибке: «тело запроса должно заканчиваться предложением select или предложением группы» – sfkHooper
В вашем запросе уже отсутствовал 'select' в конце. –