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.

Foi útil?

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
scroll top