我正在使用 MVC2 和 Entity Framework 。
我有 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;
}
关于.net - LINQ 到 SQL : How to check if any item in one entity collection exists in another entity collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564194/