【发布时间】:2018-06-14 01:24:03
【问题描述】:
我有一个包含一组值的列表。我想使用c# 中的LINQ 查询来检查表是否具有匹配计数的匹配值
这是我的清单:
List<int> list1 = new List<int>()
{
130011,
130010
};
这是我的桌子
RelEmployeeDepartments:
ID EmpID DeptID
8 4 130011
9 4 130010
10 4 2
18 13 130011
19 13 130010
20 13 1
21 13 2
23 5 130011
24 5 130010
现在我想找到所有已分配到确切部门的所有员工list1 具有相同的计数。因此,对于我的list1 中的值,输出应为EmpID 5,因为它具有相同的值和相同的部门数。 EmpID 4 & 13 不应该出现在我的输出中,因为即使员工有匹配的部门,计数也不同。
这是我想出的有效 SQL 查询:
SELECT EmpID FROM
RelEmployeeDepartments WHERE EmpID IN
(SELECT red.EmpID FROM RelEmployeeDepartments red
GROUP BY red.EmpID HAVING COUNT(red.DeptID) = 2)
AND DeptID IN (130010,130011)
GROUP BY EmpID HAVING COUNT(DeptID) = 2
我设法像这样使用LINQ 获得内部查询,但无法完全转换它。
var innerQuery = (from red in RelEmployeeDepartments
group red by red.EmpID into red1
where red1.Count().Equals(list1.length)
select red1.Key);
我想知道如何将其转换为 LINQ 查询,或者是否有比上述更好的解决方案?
【问题讨论】:
标签: c# sql-server linq