1

EF 프로젝트에서 룩업 테이블을 사용해야하고 작업을 수행하기 위해 약간의 수정이 필요했지만 어떻게 쿼리 하는지를 확신 할 수 없습니다. 나는 세 개의 테이블이있는 경우엔티티 프레임 워크에서 찾아보기 테이블 사용하기

(이 질문을 설명하기위한 테스트 프로젝트입니다) :

PS_Lookup 
--------- 
ID - Int - PK 
PersonID - Int - FK : Person.ID 
SkillID - Int - FK : Skill.ID 
: 조회 테이블로 연결되어

Person 
------ 
ID - Int - PK 
PersonName - varchar[50] 

Skill 
----- 
ID - Int - PK 
SkillName - varchar[50] 

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

관련 문제