2012-07-31 93 views
1

我不得不在EF項目中使用查找表,並且花了點時間修改它以使其工作,但我不確定如何查詢某些內容。在Entity Framework中使用查找表

如果我有三個表(這是一個測試項目來說明問題):

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條款有什麼關係。

回答

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(); 
+0

好極了,謝謝你。我剛剛習慣了Linq,但它仍然讓我一次又一次地出現。 – GrandMasterFlush 2012-07-31 08:24:50