Linq 用于筛选子表中基于数据的条件的查询

Linq 用于筛选子表中基于数据的条件的查询,linq,Linq,根据下表,我希望获得所有员工为active==1的部门名称。我特别想要一个LINQ查询 根据以下数据,仅应列出Z部门 EmpId,EmpName,DepartmentId,Active "1", "A", "1", "0" "2", "B", "1", "1" "3", "C", "1", "1" "4", "D", "2", "0" "5", "E", "3", "

根据下表,我希望获得所有员工为active==1的部门名称。我特别想要一个LINQ查询

根据以下数据,仅应列出Z部门

EmpId,EmpName,DepartmentId,Active
"1",    "A",        "1",    "0"
"2",    "B",        "1",    "1"
"3",    "C",        "1",    "1"
"4",    "D",        "2",    "0"
"5",    "E",        "3",    "1"
"6",    "F",        "3",    "1"


DeptId,DeptName
"1",    "X"
"2",    "Y"
"3",    "Z"
实现上述功能的SQL查询如下:

SELECT `DeptName` FROM `Department` d JOIN `Employee` e ON d.`DeptId` = e.`DepartmentId` WHERE `Active` = 1 AND `DepartmentId` NOT IN 
(SELECT `DepartmentId` FROM `Department` d JOIN `Employee` e ON d.`DeptId` = e.`DepartmentId` WHERE `Active` = 0) GROUP BY `DeptName`;

假设部门与员工之间存在联系:

Departments.Where(dep => dep.Employees.All(emp => (emp.Active == "1")));
否则,从员工链接到部门

Employees.Where(emp => (emp.Active == "1")).
          Select(emp => emp.Department).
          Distinct();