2008-09-05 13 views
7

¿Cómo se rescribe esto en Linq?¿Cómo escribo SELECT FROM myTable WHERE id IN (SELECT ...) en Linq?

SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....) 

Así que en la llanura Inglés, deseo seleccionar identificador y el nombre de la Tabla A donde id de la Tabla A se encuentra en un conjunto de resultados de una segunda consulta.

Respuesta

9
from a in TableA 
where (from b in TableB 
     join c in TableC on b.id equals c.id 
     where .. select b.id) 
.Contains(a.Id) 
select new { a.Id, a.Name } 
1

IN no tiene soporte para IN en LINQ. Necesitas unir 2 consultas.

4

LINQ admite IN en forma de contiene. Piensa "collection.Contains (id)" en lugar de "id IN (colección)".

from a in TableA 
where (
    from b in TableB 
    join c in TableC 
     on b.id equals c.id 
    select b.id 
).Contains(TableA.Id) 
select new { a.Id, a.Name } 

Vea también este blog post.

Cuestiones relacionadas