2012-04-17 3 views
2

다음 클래스 구조가 있습니다.LINQ - 부모 자식 개수가 1 인 경우 자식 개체 쿼리

Company > List(of Departments) > List(of Employees) 

회사에 다음 이름의 부서가 있고 해당 부서에 다음 ID의 직원이 있는지 알아보기 위해 회사에 문의하고 싶습니다.

어떻게 쿼리 할 수 ​​있습니까? (I가 1 개 또는 0 레코드를 반환 할 것으로 예상!) 내가 코드를 가지고있는 방법은 내가 그것을

If Company.Where(function(d) d.Name = 'ABC').First.Where(function(e) e.EmployeeId = 1).Count > 0 

을하고 그래서 한 부서를 반환 할 것으로 예상하지만이 if d.Name = 'ABC' 반환 0 기록 오류가 발생하지

인가 하나의 linq 성명에서이 작업을 수행 할 수 있습니까? 회사는 여러 부서를 가지고 있으며, 당신이 할 수있는 ... 미안 해요 비주얼 베이직 구문을 사용하지 않는 부서는 다음 여러 employees--을 가지고 있다고 가정

답변

4

: 경우

DB.Departments.Where(d=>d.Name=="ABC").SelectMany(d=>d.Employees).Any(e=>e.EmployeeId == 7) 

이 당신을 말할 것 특정 직원 어떤 회사의 특정 부서 이름에 속해있었습니다.

2
var employeeExists = (from company in companies 
    where company.Name = expectedCompanyName 
    from department in company.Departments 
    from employee in department.Employees 
    where employee.Id == expectedEmployeeId 
    select employee.Id).Any()