none
Comparação de múltiplas colunas no Join RRS feed

  • Pergunta

  • Pessoal;

    Preciso fazer uma consulta com um "left join" entre duas tabelas. Uma delas possui várias FK's e eu tenho que comparar todas elas na consulta. Fiz dessa forma:

    var list = (from pi in db.ProcessoImportacaoDetalhe
                        join pia in db.ProcessoImportacaoDetalheAtivo
                            on new { pi.NumeroOrdem, pi.CodigoReferencia, pi.NumeroItem, pi.CodigoRemessa, pi.CodigoProcesso, pi.CodigoProduto }
                            equals new { pia.NumeroOrdem, pia.Referencia, pia.NumeroItem, pia.Remessa, pia.Processo, pia.CodigoProduto } 
                        into ativo
                    from a in ativo.DefaultIfEmpty()                                        
                   select pi).ToList();

    O problema é que esse formato de comparação (on new {..} equals new {..}) só funciona para comparar duas colunas.

    Alguém sabe me dizer outra forma de fazer isso?


    Deise Vicentin
    "Eu não procuro saber as respostas, procuro compreender as perguntas." Confúcio

    quinta-feira, 23 de fevereiro de 2012 13:09

Respostas

  • Consegui resolver o problema, não sei se da melhor forma mas funcionou. Segue a solução para quem precisar:

    list = (from pi in db.ProcessoImportacaoDetalhe
             from pia in db.ProcessoImportacaoDetalheAtivo
                  .Where(x=> x.CodigoProduto == pi.CodigoProduto 
                          && x.NumeroItem == pi.NumeroItem 
                          && x.NumeroOrdem == pi.NumeroOrdem
                          && x.Processo == pi.CodigoProcesso
                          && x.Referencia == pi.CodigoReferencia
                          && x.Remessa == pi.CodigoRemessa)
                   .DefaultIfEmpty()
              select pi).ToList();
                


    Deise Vicentin
    "Eu não procuro saber as respostas, procuro compreender as perguntas." Confúcio

    • Marcado como Resposta Deise Vicentin quinta-feira, 23 de fevereiro de 2012 14:25
    quinta-feira, 23 de fevereiro de 2012 14:25