2016-07-18 8 views
0
여기

는 이너 LINQ 내가 종업원의Linq에

var innerJoinQuery = 
       from employee in DbSet 
       join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID 
       select new { ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name }; 


      List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.AsEnumerable().Cast<Employees>().ToList(); 

모델입니다 원하는 반환 조인 목록에 결과를 가입 나는 그것을 돌려 줄 수있다.

이 작업을 수행하는 방법을 아는 사람이 있습니까?

답변

1

정확하게 이해했다면 결과를 Employees 인스턴스 목록으로 변환 할 방법을 찾고 있습니다.

LINQ 문의 투영 부분을 업데이트하면됩니다. 현재 그것은 antonymous object에 투영됩니다. 당신이 Employees 유형

var innerjoinresult_as_employees_list =(from employee in DbSet 
             join department in DbContext.Set<Departments>() 
             on employee.DepartmentID equals department.ID 
             select new Employees { 
                ID = employee.ID, 
                FirstName = employee.FirstName, 
                LastName = employee.LastName, 
                DepartmentID = employee.DepartmentID, 
                DepartmentName = department.Name } 
             ).ToList(); 

결과에 투사 할 당신은하지 Employee 객체 익명의 유형에 투사된다

+0

'Employees'라는 클래스가 있습니까? – Shyju

+0

이 오류가 발생합니다 ... -> 엔티티 또는 복합 유형 'Ferrero.Model.Employees'를 LINQ to Entities 쿼리에서 생성 할 수 없습니다. –

+0

예/: –

1

(가변 innerjoinresult_as_employees_list의 값은 Employees 클래스의 목록이 될 것입니다). 쿼리를 다음으로 변경하십시오.

var innerJoinQuery = 
    from employee in DbSet 
    join department in DbContext.Set<Departments>() 
     on employee.DepartmentID equals department.ID 
    select new Employee { ID = employee.ID, 
          FirstName = employee.FirstName, 
          LastName = employee.LastName, 
          DepartmentID = employee.DepartmentID, 
          DepartmentName = department.Name 
         }; 

List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.ToList(); 
+0

나는이 오류가 발생 ... -> 엔티티 또는 복합 유형 'Ferrero.Model.Employees'는 LINQ to Entities 쿼리에서 생성 될 수 없습니다. –

+1

'Employee'는 모델의 엔터티 유형입니까? 엔티티 타입에 투영 할 수 있습니다 - 비 엔티티 (DTO) 타입의 익명 타입 만 가능합니다. 직접적으로 사용하는 대신 엔티티 유형으로 투영하려고하는 이유는 무엇입니까? –

+0

그래 맞아 .. 이제 알았어. 네가 맞았다 고 해줘서 고마워. :) –

1

테스트하지 않았지만 시도해보십시오. 올바른 유형으로 프로젝션해야합니다.

 var innerJoinQuery = 
       (from employee in DbSet 
       join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID 
       select new Employees{ ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name }).ToList(); 

List<Employees> employees = new List<Employees>(innerJoinQuery);