Resposta Proposta JOIN COM LINQ

  • segunda-feira, 6 de agosto de 2012 15:25
     
      Contém Código

    Olá pessoal,

    estou tentando fazer um join com linq porém não está retornando os valores, minha estrutura é a seguinte:

    1 - Leitura de arquivo texto que gera 3 datatables

    DtGetProduto, DtGetPrBarra

    var query =
                    from produto in DtGetProduto.AsEnumerable()
                    join barra in DtGetPrBarra.AsEnumerable()
                    on produto.Field<String>("PRODUTO") equals
                        barra.Field<String>("PRODUTO")
                    select produto;

    No código acima estou fazendo join porém não consigo ler os dados consolidados, seja colocando em um datatable novo ou de outra forma, alguém tem sugestões?

    Att,

    Léo


    Leonardo Jacques da Silva Desenvolvedor .net

Todas as Respostas

  • segunda-feira, 6 de agosto de 2012 16:39
     
      Contém Código
    Este código acima te retornara um IEnumerable<DataRow>, tente visualizar em forma de DataTable:

    DataTable query = (from produto in DtGetProduto.AsEnumerable()
                        join barra in DtGetPrBarra.AsEnumerable()
                        on produto.Field<String>("PRODUTO") equals
                            barra.Field<String>("PRODUTO")
                        select produto).CopyToDataTable();


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

  • segunda-feira, 6 de agosto de 2012 16:54
     
     

    Olá Vitor, obrigado pelo retorno.

    este código quando eu vou usar o datatable retornado mostra somente os dados de produto, para ver todas as colunas de todas as tabelas envolvidas no join como devo proceder?


    Leonardo Jacques da Silva Desenvolvedor .net

  • segunda-feira, 6 de agosto de 2012 17:37
     
     Resposta Proposta Contém Código

    Olá Vitor, obrigado pelo retorno.

    este código quando eu vou usar o datatable retornado mostra somente os dados de produto, para ver todas as colunas de todas as tabelas envolvidas no join como devo proceder?


    Leonardo Jacques da Silva Desenvolvedor .net


    Só dar o select em cima do resultado, pode-se criar tipos anonimos para isso, exemplo:

    var query = (from p in DtGetProduto.AsEnumerable()
                    join b in DtGetPrBarra.AsEnumerable()
                    on p.Field<String>("PRODUTO") equals
                        b.Field<String>("PRODUTO")
                    select new
                    {
                        p1 = p.Field<String>("NomeDaColunaDataTableProduto1"),
                        p2 = p.Field<String>("NomeDaColunaDataTableProduto2"),
                        p3 = p.Field<String>("NomeDaColunaDataTableProduto3"),
                        p4 = p.Field<String>("NomeDaColunaDataTableProduto4"),
                        b1 = b.Field<String>("NomeDaColunaDataTableBarra1"),
                        b2 = b.Field<String>("NomeDaColunaDataTableBarra2"),
                        b3 = b.Field<String>("NomeDaColunaDataTableBarra3"),
                        b4 = b.Field<String>("NomeDaColunaDataTableBarra4"),
                        b5 = b.Field<String>("NomeDaColunaDataTableBarra5")
                    }).ToList();


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/