使用EF过滤不相关的实体

时间:2012-01-28 03:57:28

标签: asp.net-mvc entity-framework-4

我们如何在EF中执行此操作,

Member member = db.Members.Find(id);
vmJob.MatchJob = db.Jobs.Where(p=>p.Skills in (member.Skills));

它就像一个工作匹配功能..其中会员有技能,工作需要技能。

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

Member member = db.Members.Find(id); 
var memberSkills = member.Skills.Select(ms=>ms.SkillId).ToArray(); //assumes a skill has a skill id.
var matchJobs = db.Jobs.Where(mj=> memberSkills.Contains(mj.Skill));

那应该返回job.Skills包含会员技能的工作。

答案 1 :(得分:0)

djcohen66很接近。当两者都是集合时,您可以在候选集合上使用.Any

var member = db.Members.Find(id);
var memberSkillIds = member.Skills.Select(ms => ms.SkillId).ToList();
var jobs = db.Jobs.Where(j => j.Skills.Any(js => memberSkillIds.Contains(js.SkillId)));