我正在将旧的ASP.net(C#)应用程序从普通SQL查询转换为LINQ to SQL,并且在某些更复杂的查询中遇到了一些麻烦。在这种情况下,我试图找到一个拥有一定技能的员工名单。用户选择搜索技能并将ID提供给执行该工作的方法。在旧的SQL版本中,我只是将WHERE子句添加到每个技能的字符串中。下面是一个例子查询:用于多对多关系的LINQ to SQL查询
SELECT DISTINCT e.firstname, e.lastname, e.username
FROM employees AS e
WHERE e.id IN (SELECT es.emp_id
FROM emp_skl AS es
WHERE es.skl_id = 6 OR es.skl_id = 11
GROUP BY es.emp_id
HAVING COUNT(es.emp_id) >= 2)
的关键是HAVING子句COUNT因为这可确保返回的员工的所有技能,而不是只有一个。无论如何,有人可以帮我把这变成一个坚实的LINQ查询?
所有的alt text http://i32.tinypic.com/25focg2.jpg
发送架构图的好举措。 – 2010-07-17 01:50:51