我不得不在EF项目中使用查找表,我花了一些时间来修改它,但我不确定如何查询。
如果我有三个表(这是一个用于说明问题的测试项目):
Person
------
ID - Int - PK
PersonName - varchar[50]
和
Skill
-----
ID - Int - PK
SkillName - varchar[50]
由查找表链接:
PS_Lookup
---------
ID - Int - PK
PersonID - Int - FK : Person.ID
SkillID - Int - FK : Skill.ID
现在,如果我想要返回所有具有ID 1技能的用户,我就可以做到:
var result = (from p in context.People
select new
{
PersonID = p.ID,
PersonName = p.PersonName,
FirstSkill = (from s in p.PS_Lookup
where s.ID == 1
select s.SkillName),
}).ToList();
我的问题是,我需要更改上述查询只是为了返回拥有ID 1技能的每个人的PersonName和PersonID?
即不返回“FirstSkill”。我不需要这个名字,因为我知道FirstSkill是什么,我无法看到我与where
子句的关系。
答案 0 :(得分:2)
您需要在查询中使用where where条件:
var result = (from p in context.People
where p.PS_Lookup.Any(ps => ps.ID == 1)
select new { p.ID, p.PersonName })
.ToList();