Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在寻找一种更好的方法来按ID获取项目集合_C#_Asp.net_Linq_Linq To Sql - Fatal编程技术网

C# 正在寻找一种更好的方法来按ID获取项目集合

C# 正在寻找一种更好的方法来按ID获取项目集合,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 {

我有一个相当标准的设置,在部门和员工之间有一个多对多的关系

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;
    }
}
公共部分课程部
{
公开名单
{
int[]employeeIds=MyDBDataContext.DepartmentEmployees。
其中(de=>de.DepartmentID==this.DepartmentID)。
选择(de=>de.EmployeeID.Value).ToArray();
列出employees=(从MyDBDataContext.employees中的x开始)
其中EmployeeID.Contains(x.EmployeeID)
选择x).ToList();
返回员工;
}
}
这很好,但我不喜欢做两个数据库调用。使用LINQ还有其他方法吗?

为什么不使用连接

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();

谢谢,我甚至不知道我能做到。我想我需要多读一些关于林克的书