none
LINQ to SQL três tabelas RRS feed

  • Pergunta

  • Como eu faria com LINQ uma consulta assim? Obrigado

    select c.*,rf.NomeFuncionario
    from Chamado c Left JOIN ChamadoProspeccao cp on c.IDChamado= cp.IDChamado
    LEFT JOIN  RevendaFuncionario rf on cp.IDRevendaFuncionario = rf.IDRevendaFuncionario


    Paulo Marcelo Dalbosco

    segunda-feira, 18 de fevereiro de 2013 14:06

Respostas

  • Paulo, bom dia

    a consulta com Left Join é feita usando o Método DefaultIfEmpty

    http://www.oficinadanet.com.br/artigo/asp.net/fazendo-inner-join-e-left-join-com-linq-no-aspnet


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    • Marcado como Resposta Paulo M Dalbosco terça-feira, 19 de fevereiro de 2013 13:39
    terça-feira, 19 de fevereiro de 2013 13:35
    Moderador
  • Obrigado pela resposta Olavo, consegui! Vou deixar o exemplo em VB que é bem raro de achar na internet.

    Dim RetornaChamdoProspeccao = (From c In db.Chamados
                                                Group Join cp In db.ChamadoProspeccoes
                                                    On c.IDChamado Equals cp.IDChamado
                                                    Into Children = Group
                                                    From child In Children.DefaultIfEmpty() _
                                                Group Join ct In db.ChamadoTecnicos _
                                                    On c.IDChamado Equals ct.IDChamado
                                                    Into ChildrenTS = Group
                                                    From childts In ChildrenTS.DefaultIfEmpty
                                                Group Join rf In db.RevendaFuncionarios _
                                                    On child.IDRevendaFuncionario Equals rf.IDRevendaFuncionario
                                                    Into ChildrenRF = Group
                                                    From childrf In ChildrenRF.DefaultIfEmpty
                                                Select New With {.IDChamado = c.IDChamado, _
                                                                 .IDCliente = c.IDCliente, _
                                                                    .PessoaContato = c.PessoaContato, _
                                                                    .Local = If(CStr(childts.Local) IsNot Nothing, childts.Local, Nothing), _
                                                                    .NomeFuncionario = If(CStr(childrf.NomeFuncionario) IsNot Nothing, childrf.NomeFuncionario, Nothing),
                                                                    .IDSoftware = c.IDSoftware, _
                                                                    .IDRevendaFuncionario = If(CStr(child.IDRevendaFuncionario) IsNot Nothing, child.IDRevendaFuncionario, Nothing),
                                                                    .DataAbertura = c.DataAbertura, _
                                                                    .Status = c.Status, _
                                                                    .Telefone = c.Telefone, _
                                                                    .HoraAbertura = c.HoraAbertura})


    Paulo Marcelo Dalbosco

    • Marcado como Resposta Paulo M Dalbosco terça-feira, 19 de fevereiro de 2013 13:39
    terça-feira, 19 de fevereiro de 2013 13:39

Todas as Respostas

  • Paulo, bom dia

    a consulta com Left Join é feita usando o Método DefaultIfEmpty

    http://www.oficinadanet.com.br/artigo/asp.net/fazendo-inner-join-e-left-join-com-linq-no-aspnet


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    • Marcado como Resposta Paulo M Dalbosco terça-feira, 19 de fevereiro de 2013 13:39
    terça-feira, 19 de fevereiro de 2013 13:35
    Moderador
  • Obrigado pela resposta Olavo, consegui! Vou deixar o exemplo em VB que é bem raro de achar na internet.

    Dim RetornaChamdoProspeccao = (From c In db.Chamados
                                                Group Join cp In db.ChamadoProspeccoes
                                                    On c.IDChamado Equals cp.IDChamado
                                                    Into Children = Group
                                                    From child In Children.DefaultIfEmpty() _
                                                Group Join ct In db.ChamadoTecnicos _
                                                    On c.IDChamado Equals ct.IDChamado
                                                    Into ChildrenTS = Group
                                                    From childts In ChildrenTS.DefaultIfEmpty
                                                Group Join rf In db.RevendaFuncionarios _
                                                    On child.IDRevendaFuncionario Equals rf.IDRevendaFuncionario
                                                    Into ChildrenRF = Group
                                                    From childrf In ChildrenRF.DefaultIfEmpty
                                                Select New With {.IDChamado = c.IDChamado, _
                                                                 .IDCliente = c.IDCliente, _
                                                                    .PessoaContato = c.PessoaContato, _
                                                                    .Local = If(CStr(childts.Local) IsNot Nothing, childts.Local, Nothing), _
                                                                    .NomeFuncionario = If(CStr(childrf.NomeFuncionario) IsNot Nothing, childrf.NomeFuncionario, Nothing),
                                                                    .IDSoftware = c.IDSoftware, _
                                                                    .IDRevendaFuncionario = If(CStr(child.IDRevendaFuncionario) IsNot Nothing, child.IDRevendaFuncionario, Nothing),
                                                                    .DataAbertura = c.DataAbertura, _
                                                                    .Status = c.Status, _
                                                                    .Telefone = c.Telefone, _
                                                                    .HoraAbertura = c.HoraAbertura})


    Paulo Marcelo Dalbosco

    • Marcado como Resposta Paulo M Dalbosco terça-feira, 19 de fevereiro de 2013 13:39
    terça-feira, 19 de fevereiro de 2013 13:39