none
JOIN COM LINQ RRS feed

  • Pergunta

  • 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

    segunda-feira, 6 de agosto de 2012 15:25

Todas as Respostas

  • 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:39
  • 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 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


    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/

    • Sugerido como Resposta Pablo Batista Cardoso segunda-feira, 6 de agosto de 2012 18:30
    • Marcado como Resposta Leosul terça-feira, 7 de agosto de 2012 16:56
    • Não Marcado como Resposta Leosul quinta-feira, 23 de agosto de 2012 21:16
    segunda-feira, 6 de agosto de 2012 17:37