我有两个实体候选人和CandidateLocation候选人可以有多个CandidateLocation条目。Linq导航属性复杂其中的ID(选择ID从...)
CandidateLocation包含CandidateId,ISO国家代码(例如US,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