Como escrevo SELECT FROM myTable WHERE id IN (SELECT…) no Linq?
-
09-06-2019 - |
Pergunta
Como você reescreve isso no Linq?
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
Então, em inglês simples, quero selecionar Id e Name da TabelaA, onde o Id da TabelaA está em um conjunto de resultados de uma segunda consulta.
Solução
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 }
Outras dicas
LINQ suporta IN na forma de contém.Pense em "coleção.Contains(id)" em vez de "id IN (coleção)".
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 }
Veja também este blog publicar.
Não há suporte imediato para IN no LINQ.Você precisa juntar 2 consultas.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow