#c# #asp.net #linq #linq-to-sql
#c# #asp.net #linq #linq-to-sql
Вопрос:
У меня довольно стандартная настройка с отношением «многие ко многим» между отделами и сотрудниками.
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:
Почему бы не использовать объединение?
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();
Комментарии:
1. Спасибо, я даже не знал, что могу это сделать. Думаю, мне нужно еще немного почитать о LINQ