我正在使用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;
}
同样,我也希望获得具有所有技能的候选人。
答案 0 :(得分:3)
我在第一种情况下使用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;
}