У меня есть два сущности Кандидат и кандидат, где кандидат может иметь несколько записей кандидата.Linq Navigation Properties complex, где ID в (select id from ...)
КандидатЗадание содержит Кандидат, код страны ISO (например, США, GB) и колонку типа (1 = Разрешено, 2 = Ограничено).
Правила диктуют, что если у кандидата нет никаких разрешенных записей в таблице CandidateLocation, они могут работать в любом месте. Если они имеют явное «разрешенное» местоположение, они могут работать только в явно разрешенных местах. Они не могут работать в местах с ограниченным доступом.
попробовать продемонстрировать это смотрите изображение ниже (Кандидаты могут иметь несколько мест, я охранял его к одному, чтобы упростить рисунок)
В SQL один из способов достижения этой цели было бы следующий запрос
SELECT *
FROM Candidate
WHERE Candidate.IsArchived = 0
AND
-- Do not inlude restricted locations (RestrictionStatus = 2)
Candidate.CandidateId NOT IN (SELECT CandidateId FROM CandidateLocation WHERE IsArchived = 0 AND CountryISOCode = @Location AND RestrictionStatus = 2)
AND
(
-- Include Explicit Permitted Locations
Candidate.CandidateId IN (SELECT CandidateId FROM CandidateLocation WHERE IsArchived = 0 AND CountryISOCode = @Location AND RestrictionStatus = 1)
OR
-- Include Candidates with no Explicit Permitted Locations
Candidate.CandidateId NOT IN (SELECT CandidateId FROM CandidateLocation WHERE IsArchived = 0 AND RestrictionStatus = 1)
)
Если кто-нибудь знает, как добиться этого с помощью LINQ & свойства навигации я бы очень признателен за помощь.
Большое спасибо
Что у вас до сих пор? [Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – istepaniuk