Ищете лучший способ получить коллекцию предметов по идентификатору - PullRequest
0 голосов
/ 02 мая 2011

У меня довольно стандартная конфигурация с отношениями «многие ко многим» между департаментами и сотрудниками.

Departments
---------------
DepartmentID
Name

Employees
---------------
EmployeeID
Name

DepartmentEmployees
-------------------
DepartmentID
EmployeeID

Учитывая данный департамент, я хотел бы вернуть список сотрудников для этого департамента.Вот что у меня есть:

public partial class Department
{
    public List<Employee> GetEmployees()
    {
        int[] employeeIds = MyDBDataContext.DepartmentEmployees.
                            Where(de => de.DepartmentID == this.DepartmentID).
                            Select(de => de.EmployeeID.Value).ToArray();

        List<Employee> employees = (from x in MyDBDataContext.Employees
                                    where employeeIds.Contains(x.EmployeeID)
                                    select x).ToList();

        return employees;
    }
}

Это отлично работает, но я не люблю делать два вызова базы данных.Есть ли другой способ сделать это с помощью LINQ?

1 Ответ

2 голосов
/ 02 мая 2011

Почему бы не использовать Join?

var employees = (from e in MyDBDataContext.Employees
                 join de in MyDBDataContext.DepartmentEmployees
                     on e.EmployeeID equals de.EmployeeID
                 where de.DepartmentID == this.DepartmentID
                 select e).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...