我正在使用MVC2和实体框架。
我有2个实体集合,我需要比较它们并检查它们是否有任何共同的项目。例如,我有EntityCollection<Candidate>
和EntityCollection<Job>
。我试图返回所有候选人的技能,在工作的首选技能中列出。这是正确的吗?
public IQueryable<Candidate> GetMatchingCandidates(Job job)
{
return from candidate in _db.Candidates
where (candidate.CandidateSkills.Where(c => job.JobPreferredSkills.Any(j => j.SkillId== c.SkillId)).Count() > 0)
select candidate;
}
同样,我也希望候选人拥有所有在首选技能中列出的技能。
我将在第一种情况下使用Any()
:
public IQueryable<Candidate> GetMatchingCandidates(Job job)
{
return from candidate in _db.Candidates
where (candidate.CandidateSkills.Any(c => job.JobPreferredSkills.Any(j => j.SkillId == c.SkillId)))
select candidate;
}
然后在第二种情况下使用All()
(所有技能都必须在首选技能中)
public IQueryable<Candidate> GetMatchingCandidates(Job job)
{
return from candidate in _db.Candidates
where (candidate.CandidateSkills.All(c => job.JobPreferredSkills.Any(j => j.SkillId == c.SkillId)))
select candidate;
}