Используйте функциональность «Включить оператор» в «Операторе соединения» в Entity Framework - PullRequest
1 голос
/ 15 сентября 2011

У меня есть запрос linq для двух таких сущностей, как этот

IQueryable<Employee> employees = CreateObjectSet<Employee>().AsQueryable();
IQueryable<Department> depts = CreateObjectSet<Department>().AsQueryable();

        var result = (from employee in employees                         
                      join dept in depts
                          on emp.DeptID equals dept.ID
                             select employee

У моего объекта Employee есть свойство навигации для Department и он возвращает весь свой объект, но этот запрос, я полагаю, не возвращает информацию о DepartmentЯ должен установить значения в выбранном утверждении, что-то вроде этого

                 var result = (from employee in employees                         
                      join dept in depts
                          on emp.DeptID equals dept.ID
                           ****  employee.Dept=dept            ****
                                select employee

Я не хочу устанавливать все свойства класса Employee и, следовательно, возвращать этот новый объект, пожалуйста, сообщите мне какой-нибудь лучший подход.

Спасибо

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Насколько я понимаю, вы хотите выбрать всех сотрудников вместе с их отделами (поправьте меня, если я ошибаюсь).Если у вас есть навигационное свойство, вам вообще не понадобится объединение.Вы можете использовать Include так:

List<Employee> employeesWithDepartments = CreateObjectSet<Employee>().
                                          Include(e => e.Department).
                                          ToList();
1 голос
/ 15 сентября 2011

не могли бы вы использовать оператор let в качестве хака?

 var result = (from employee in employees                         
                  join dept in depts
                      on employee.DeptID equals dept.ID
                       let notUtile = employee.Dept=dept
                            select employee);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...