2013-05-13 113 views
-3

我正在使用ADO.NET查询来选择具有位置x,y或z并且正在工作的所有员工的员工ID主管。检查行是否在列表中,并将其与表中的其他行进行比较

这是我一起工作的查询:

SELECT e.Employee_OID 
FROM Employee e 
WHERE EXISTS (SELECT 1 
       FROM Employee e1 
       WHERE e.Employee_OID = e1.Supervisor_OID 
       AND  e1.Active_f = 'A') 
AND  e.Location_OID IN (123, 22) 
AND  e.Active_f = 'A' 

我想转换,这是为LINQ的表情,我是一个初学者到LINQ和EF,能有人引导我进入写入LINQ这?

这是我到目前为止有:

var supervisors = (from employee in Employee 
     where employee.location_OID == "???" //I have ID's in a list here 
     select employee.Employee_OID).Any(); 
+1

@所有downvoters,谢谢!但是,提供一个有用的链接,如[this](http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b),将不胜感激。 – faizanjehangir 2013-05-13 12:26:17

+6

@faizanjehangir我们不在这里为您搜索。在问一个问题之前,让你的作业有一点研究。 – I4V 2013-05-13 12:29:13

+3

如果您对EF做过任何工作,本文中的问题通常都是相关且可识别的。这个问题有正确和错误的答案,不太可能引起辩论。接近的选票不合理。我认为这是一个好问题,并[已发布如此元](http://meta.stackexchange.com/questions/180021/quick-downvotes-for-question-that-looks-simple-but-is-not) – Andomar 2013-05-13 13:09:27

回答

4

如果您正在使用EF 4.0或更高版本,可以使用Contains()检查的项目是在一个列表:

where yourList.Contains(employee.location_OID) 

exists子查询可以用Any()完成:

where employee.Any(e1 => e.Employee_OID == e1.Supervisor_OID && 
         e1.Active_f == "A") 
相关问题