¿Cómo escribo SELECCIONAR DE myTable DONDE id IN (SELECCIONAR…) en Linq?
-
09-06-2019 - |
Pregunta
¿Cómo se reescribe esto en Linq?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
Entonces, en términos sencillos, quiero seleccionar Id. y Nombre de la TablaA, donde el Id. de la TablaA está en un conjunto de resultados de una segunda consulta.
Solución
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 }
Otros consejos
LINQ admite IN en forma de contenidos.Piense en "colección.Contiene(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 }
Ver también este blog correo.
No hay compatibilidad inmediata con IN en LINQ.Necesitas unir 2 consultas.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow