Я использую Linq около года, и у меня есть только грубое понимание SQL.Так что следующая проблема может быть банальной, и я прошу прощения за это сейчас.Но на работе меня попросили выяснить наиболее эффективный способ использования linq на следующем sql.и мне нужна помощь.
У меня есть таблица клиента и таблица ClientParticiaption.В таблице ClientParticiaption указываются клиенты, участвующие в специальной программе обучения.Мне нужно определить, какие Клиенты не участвуют в специальной программе обучения.Вот SQL, который работает:
SELECT *
FROM Client
WHERE ClientControlID NOT IN
(
SELECT ClientControlID
FROM ClientParticipation
)
У меня проблемы с преобразованием этого в эквивалентный оператор linq.Я думаю, что я должен использовать оператор Except, но я не уверен, как в этом случае.Любые мысли были бы очень полезны.
Вот то, что я сейчас делаю, и это работает, но я подозреваю, что это не очень эффективно.Обратите внимание, что я использую Entity Framework и, возможно, неправильно предположил, что решение этой проблемы не имеет никакого отношения к EF.
IList<int> clientControlIDs =
ClientArngmt.Select(
cac => cac.ClientControlID ).ToList();
IList<int> particiaptionClientArngmtIDs =
Participations.Select(
cap => cap.ClientArngmtID ).ToList();
IEnumerable<int> notParticipatingClientArngmtIDs =
clientArngmtIDs.Except(
particiaptionClientArngmtIDs );