none
Select com join retornando um unico item com uma lista RRS feed

  • Pergunta

  • Fala pessoal, blz?

    Ficou mal explicado o título, mas é o seguinte.

    Tenho um objeto que possui uma lista de objetos, no banco a mesma coisa, esse objeto possui um relacionamento com outra tabela que podem ter muitos registros relacionados a ele.

    Dessa forma minha classe fica assim

    public class Pai
    {
              public String Id {get; set;}
              public String Nome {get; set;}
              public List<Filhos> ListaDeFilhos {get; set;}
    }

    através do linq to sql fica fácil buscar o pai e sua Lista de Filhos, mas com instrução SQL pura, é possível preencher a lista de Filhos com uma só instrução? 


    • Editado Yuri Schmitz segunda-feira, 9 de dezembro de 2013 16:43
    segunda-feira, 9 de dezembro de 2013 16:42

Todas as Respostas

  • é sim!

    você pode fazer um INNER JOIN nas tabelas e ai ele vai trazer tipo um lista repetidas do Pai com todos os filhos

    Na hora da passagem de mensagem se preenche a primeira vez Id, e Nome mais o primeiro registro de filhos e depois só adicione a lista!!! Seria uma forma!!!!

    SELECT Filhos.PaiId, Pai.Nome, Filhos.Id as FilhoId, Filhos.NomeFilho 
    FROM Pai INNER JOIN Filhos ON FILHOS.PaiId = Pai.Id 
    WHERE Filhos.PaiId = 1

    Agora se instancia Pai

    e rodar um Reader sendo que a primeira linha se vai preencher Id e Nome e uma Linha de Listas de Filhos as próximas serão a Lista de Filhos ... Seria uma lógica apropriada


    Fulvio Cezar Canducci Dias

    • Sugerido como Resposta Guilherme da Luz sexta-feira, 13 de dezembro de 2013 18:36
    terça-feira, 10 de dezembro de 2013 13:06
  • Valeu Fluvio, to achando que é melhor não querer inventar.

    Não sei se é realmente a melhor solução, vou retornar primeiro uma lista dos "pais" e dando um foreach nela eu vou retornando a lista de "filhos"

    Abraço

    sexta-feira, 13 de dezembro de 2013 18:31
  • Yuri só uma dica ! A cláusula INNER JOIN do Sql é feita pra isso mesmo pra vc não precisar fazer duas SELECT no banco de dados correto ! Imagina que sua consulta traga um milhão de registros, qual a melhor performance ! Fazer uma consulta que traga um milhão ou duas que cada uma traga um milão de registros. Utilize o INNER JOIN. Por isso que o LINQTOSQL tem o metodo JOIN tbm.
    sexta-feira, 13 de dezembro de 2013 18:35
  • Yuri, Não faça dessa forma.

    A diferença de performance é gritante, siga o exemplo do Fúlvio.

    sexta-feira, 13 de dezembro de 2013 18:37