使用具有实体框架的查找表

时间:2012-07-31 08:11:42

标签: c# .net entity-framework entity-framework-4 lookup-tables

我不得不在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子句的关系。

1 个答案:

答案 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();