2010-04-21 4 views
0

정확한 단어를 입력하는 방법을 알지 못해서 제 질문의 문맥을 용서하십시오. 나는이를 볼 때, 그것이 속한 모든 직원을 표시합니다 "X"다시 그들이 부서에 속하는 모든 종업원 날 가져 "LINQ - 다 대다 관계를 통해 필터링 된 목록 쿼리

을 :. 더 일을 복잡하게하지하려면

, 여기에 내 비즈니스 요구 사항입니다

내 환경은 다음과 같습니다. Entity Framework 1.0 및 WCF Data Services 1.0이 포함 된 Silverlight 3. 모든 종류의 목록을로드하고 바인딩 할 수 있지만 문제가 없습니다. 내 환경이 좋지 않다고 생각합니다. 문제는 그것이 기술보다 LINQ 질문이라고 생각하는 이유입니다.

제 질문은 : 세 개의 테이블 (예 : 엔티티 (컬렉션))이 연결된 시나리오의 경우

예를 들어, 내 EDM : Employee - EmployeeProject - Project에이 파일이 있습니다.

------------------------ 
Employee (entity1) 
------------------------ 
(Scalar Properties) 
------------------- 
EmployeeID (PK) 
FirstName 
other Attributes ... 
------------------- 
(Navigation Properties) 
------------------- 
EmployeeProjects 

------------------------ 
EmployeeProject (entity2) 
------------------------ 
(Scalar Properties) 
------------------- 
EmployeeProjectID (PK) 
AssignedDate 
other Attributes ... 
------------------- 
(Navigation Properties) 
------------------- 
Employee 
Project 

------------------------ 
Project (entity3) 
------------------------ 
(Scalar Properties) 
------------------- 
ProjectID (PK) 
Name 
other Attributes ... 
------------------- 
(Navigation Properties) 
------------------- 
EmployeeProjects 

지금까지, 난 단지 할 수 있었다 : 여기

Employee (table1) 
------------- 
EmployeeID (PK) 
FirstName 
other Attributes ... 

EmployeeProject (table2) 
------------- 
EmployeeProjectID (PK) 
EmployeeID (FK) 
ProjectID (FK) 
AssignedDate 
other Attributes ... 

Project (table3) 
------------- 
ProjectID (PK) 
Name 
other Attributes ... 

는 엔티티 프레임 워크에서 EDM 디자인이다 : 여기

는 데이터베이스에서 테이블 디자인의

var filteredList = Context.Employees 
    .Where(e => e.EmployeeProjects.Where(ep => ep.Project.Name == "ProjectX")) 

참고 : John의 게시물 뒤에 쿼리 구문을 업데이트했습니다.

위에서 볼 수 있듯이 관련 엔터티 (EmployeeProjects) 만 쿼리 할 수 ​​있습니다. 필자가 원한 것은 Employee 엔티티에서 Project로 필터링 할 수 있다는 것입니다.

어떤 조언을 주셔서 감사합니다.

답변

1

내가 제대로,이 같은 뭔가를 찾고있는 당신의 질문을 이해한다면 : 귀하의 빠른 회신

var filteredList = employees.Where(e => e.EmployeeProjects.Count(ep => ep.Project.Name == "Some project name") > 0) 
+0

감사 존. 쿼리를 입력하려고했는데 WCF Data Services가 URI의 Count를 지원하지 않는 것 같습니다. 내 초기 쿼리 구문이 잘못 알았을 수도 있습니다. 카운트를 무시하십시오. 단순히 목록을 필터링하려는 시도였습니다. 이 같은 그래서 지금 노력하고 뭔가 : var에 filteredList = Context.Employees 어디에요 (예 => e.EmployeeProjects.Where (EP => ep.Project.Name == "ProjectX")) 당신을 수행 내가 뭘하려고하는지 알아? – user118190