2010-05-13 11 views
8

¿Cómo traduciría la siguiente consulta SQL a una consulta LINQ comparable?Cómo escribir una consulta SQL "No en" en LINQ?

select * from Dept 
where Id not in (
    Select Id 
    from Employee 
    where Salary > 100); 
+1

Además, LINQPad es una herramienta útil para ayudar a escribir y probar consultas LINQ – CaffGeek

+0

en este caso también se podría utilizar negación lógica: donde Salario <= 100 –

+0

@ Chad..ya tratarán parece útil @ CrazyJugglerDrummer bien, estoy tratando de hacer algo más complejo ... pero en este caso sería:) ... – Vishal

Respuesta

15

intentar algo como esto:

var result = from d in Dept 
      let expensiveEmployeeIds = (from e in Employee.Employees 
             where e.Salary > 100 
             select e.Id) 
      where !expensiveEmployeeIds.Contains(d.Id) 
      select d; 
0

¿Qué tal esto?

var lowPaidEmps = from d in db.Dept 
        join e in db.Employees on d.Id equals e.Id 
        where e.Salary <= 100 
        select d; 
+2

Eso no es lógicamente equivalente. Imagine un departamento sin empleados (la consulta original lo devuelve, esta consulta no). –

+0

Me alegra que hayas conseguido lo que estás buscando. – Rob

Cuestiones relacionadas