2016-07-18 3 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(); 

Модель работников:

public class Employees 
    { 
     public int ID { get; set; } 

     [Required] 
     public string FirstName { get; set; } 
     [Required] 
     public string LastName { get; set; } 

     public int DepartmentID { get; set; } 

     [NotMapped] 
     public string DepartmentName { get; set; } 
    } 

Моя проблема заключается в том, что я не могу иметь уаг innerJoinQuery, как List<Employees> так Я могу вернуть его.

Кто-нибудь знает, как это сделать?

ответ

1

Если я правильно понял вас, вы ищете способ преобразования своего результата в список Employees экземпляров.

Вы можете это сделать, обновив проекционную часть вашего оператора LINQ. В настоящее время он работает с антонимусом. Вы хотите, чтобы проецировать 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(); 

Результата (значение переменной innerjoinresult_as_employees_list «s будет список Employees класса)

+0

У вас есть класс под названием «Сотрудники»? – Shyju

+0

Я получаю эту ошибку ... -> Объект или сложный тип 'Ferrero.Model.Employees' не могут быть сконструированы в запросе LINQ to Entities. –

+0

Да, я:/.... –

1

Вы проецируете на анонимный тип, а не Employee объектов. Измените запрос:

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' сущностью типа в вашей модели? Вы можете: t проектировать типы сущностей - только анонимные типы для типов без сущности (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); 
Смежные вопросы