1

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

4

1 回答 1

2

您需要在查询中使用 where 条件:

var result = (from p in context.People
              where p.PS_Lookup.Any(ps => ps.ID == 1)
              select new { p.ID, p.PersonName })
             .ToList();
于 2012-07-31T08:16:39.903 回答