none
LINQ com Join e cláusula Where - Como fazer? RRS feed

  • Pergunta

  • Boa tarde. Estou tentando fazer um left outer join (SQL) com o LINQ, porém, não estou conseguindo. O código da minha classe, é este abaixo. Alguem consegue me dar uma luz de como resolvo isso?

      Entities banco = new Entities();
               
                List<PESSOASFJ> listapessoa = (from pes in banco.PESSOASFJ
                                               join nf in banco.NOTAFISCALCAPA on pes.IDPESSOAFJ equals nf.IDPESSOAFJ
                                               select new
                                               {
                                                   IdPessoa = pes.IDPESSOAFJ,
                                                   NomePessoa = pes.NOME,
                                                   NroNota = nf.NRNOTA,
                                                   SerieNota = nf.IDSERIE
                                               }).Where(p => p.NomePessoa(_nome.ToUpper()).ToList();
    
                //Where(p => p.Contains(_nome.ToUpper())) select pes).ToList();
    
                return View(listapessoa);


    Jerry

    segunda-feira, 1 de janeiro de 2018 19:50

Respostas

  • Olá JeRRy-SC

    Tudo bem?!

    Tente usar isso:

    var listapessoa = (from pes in banco.PESSOASFJ
                        join nf in banco.NOTAFISCALCAPA 
                        on pes.IDPESSOAFJ equals nf.IDPESSOAFJ
                        into notas
                        from n in notas.DefaultIfEmpty()
                        select new
                        {
                            IdPessoa = pes.IDPESSOAFJ,
                            NomePessoa = pes.NOME,
                            NroNota = n.NRNOTA,
                            SerieNota = n.IDSERIE
                        }).Where(p => p.NomePessoa.Contains(_nome.ToUpper())).ToList();

    acrescentei apenas:

    into notas
    from n in notas.DefaultIfEmpty()
    Teste, por que não testei, apenas fiz com base no que eu vejo em seu código!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    terça-feira, 2 de janeiro de 2018 01:33

Todas as Respostas

  • Olá JeRRy-SC

    Tudo bem?!

    Tente usar isso:

    var listapessoa = (from pes in banco.PESSOASFJ
                        join nf in banco.NOTAFISCALCAPA 
                        on pes.IDPESSOAFJ equals nf.IDPESSOAFJ
                        into notas
                        from n in notas.DefaultIfEmpty()
                        select new
                        {
                            IdPessoa = pes.IDPESSOAFJ,
                            NomePessoa = pes.NOME,
                            NroNota = n.NRNOTA,
                            SerieNota = n.IDSERIE
                        }).Where(p => p.NomePessoa.Contains(_nome.ToUpper())).ToList();

    acrescentei apenas:

    into notas
    from n in notas.DefaultIfEmpty()
    Teste, por que não testei, apenas fiz com base no que eu vejo em seu código!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    terça-feira, 2 de janeiro de 2018 01:33
  • Oi Rafael! Funcionou, obrigado.

    Você sabe como eu poderia chamar essa classe lá dentro do view para listar os dados desse objeto anonimo?


    Jerry

    terça-feira, 2 de janeiro de 2018 14:54
  • Sim tem como mais eu particularmente não acho ideal a forma de fazer isso.

    Post aqui as classes : 

    PESSOASFJ e NOTAFISCALCAPA

    E eu irei te ajudar fazer de uma forma melhor!

    Tipo assim:

    List<NOTAFISCALCAPA> listapessoa = (from pes in banco.PESSOASFJ
                        join nf in banco.NOTAFISCALCAPA 
                        on pes.IDPESSOAFJ equals nf.IDPESSOAFJ
                        into notas
                        from n in notas.DefaultIfEmpty()
                        select n).Where(p => p.NomePessoa.Contains(_nome.ToUpper())).ToList();

    E sem sua View receber a lista:

    @model List<NOTAFISCALCAPA>

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    terça-feira, 2 de janeiro de 2018 16:59