Link - executando join
Em uma query simples de consulta no LINQ teriamos por exemplo a seleção das linhas da tabela "Perguntas", ficaria assim:
from x in Perguntas select x
Mas imagine que nós queremos trazer justamente as respostas que foram dadas para a pergunta de ID = 1.
No SQL, poderíamos apenas mencionar os campos de cada tabela, separando por virgula e colocando o nome da tabela antes, correto ? Ex:
Select p.idPergunta, p.dsPergunta, r.dsResposta from Perguntas p join Respostas r on p.idPergunta = r.idPergunta where p.idPergunta = 1
No Sql acima, nos retornaria todas as respostas dadas para a pergunta de id = 1 , mas no LINQ precisamos utilizar o comando SELECT NEW e especificarmos variáveis que receberão o valor dos campos trazidos na query. Veja como ficaria o caso acima no LINQ:
from x in Perguntas join y in Respostas on x.IdPergunta equals y.idPergunta where (x.idPergunta == 1)
Select new
{
pergunta = p.dsPergunta, resposta = r.dsResposta
}
Vocês podem perceber que sempre no LINQ ao utilizar o sinal de =, devemos fazer como a comparação no C# "==", dois iguais e devemos também substituir o "=" do join por equals.
Conclusão!
O LINQ é uma ferramenta que auxilia bastante no dia a dia, traz velocidade e quebra muitos galhos quando se trata de trabalhar com dados vindos do banco sem ter que ficar pesquisando novamente na base. Espero que tenham aproveitado bem esta dica. Até o próximo artigo. Ass: Alex