none
Linq c# RRS feed

  • Pergunta

  • Bom dia galera... estou com dúvida de como realmente funciona o linq no c#, uma semana atras entrei com uma dúvida aqui no forum perguntando como eu faria um inner join de uma tabela do banco de dados em uma variável do tipo Datatable, e então me sugeriram o LINQ porém não entendi como funciona realmente por exemplo onde está meu resultado segue o código abaixo...

     var results = from table1 in dados.AsEnumerable()
                          join table2 in dtFuncApuraSaldoGeral.AsEnumerable() on (int)table1["CD_PROD_SERV"] equals (int)table2["CD_PRODUTO"]
                          select new
                          {
                              cod_produto = (int)table1["CD_PRODUTO"],
                              vcr_qt_saldo = (double)table1["QTD_SALDO"]
                          };

            foreach (var item in results)
            {
                Console.WriteLine(String.Format("Cod. Produto = {0}, QTD_SALDO = {1}", item.cod_produto, item.vcr_qt_saldo));
            }
            Console.ReadLine();

    segunda-feira, 13 de fevereiro de 2017 11:32

Respostas

  • Entendi, para adicionar a um DataTable basta criar as colunas:

    DataTable dt = new DataTable();
    dt.Columns.Add("cd_produto");
    dt.Columns.Add("qtd_saldo");
    
    DataRow row = dt.NewRow();
    foreach (var item in results)
            {
                row["cd_produto"] = item.cod_produto;
    	    row["qtd_prod"] =  item.vcr_qt_saldo;
    	//Adiciona as linhas ao datatable a cada loop
    	dt.Rows.Add(row);
            }
        
    



    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta AlonsoLucas segunda-feira, 13 de fevereiro de 2017 12:34
    segunda-feira, 13 de fevereiro de 2017 12:19
  • Bom, declare o DataTable

    DataTable dt = new DataTable(); 
    dt.Clear();
    dt.Columns.Add("CD_PRODUTO");
    dt.Columns.Add("QTD_SALDO");
    
    E dentro do loop que você tem,coloque o código pra adicionar linhas

    DataRow linha= dt.NewRow();
    linha["CD_PRODUTO"] = item.cod_produto;
    linha["QTD_SALDO"] = item.vcr_qt_saldo;
    dt.Rows.Add(linha);
    Certo?
    -
    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta
    • Marcado como Resposta AlonsoLucas segunda-feira, 13 de fevereiro de 2017 12:34
    segunda-feira, 13 de fevereiro de 2017 12:20

Todas as Respostas

  • Não entendi sua duvida, você só copiou o código de alguém ou tentou entender antes?

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 13 de fevereiro de 2017 11:53
  • esse é mo meu código, estou tentando implementar no que pesquisei até agora, mas não entendi a ideia do LINQ realmente e não estou conseguindo implementa-lo.
    segunda-feira, 13 de fevereiro de 2017 11:58
  • Olá,
    O resultado está no seu var results.Ele recebeu o valor da query(que tem o join) e criou um novo tipo(com o select new).
    Nesse caso, você usou o linq pra fazer inner join em dois objetos(dois datatables) e usou seu resultado pra criar um terceiro tipo(com 2 propriedades).

    Certo?

    -
    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta
    segunda-feira, 13 de fevereiro de 2017 12:01
  • ola, certo... agora preciso pegar esse resultado e adiciona lo em um Datatable para retornar em meu relatório.
    segunda-feira, 13 de fevereiro de 2017 12:04
  • Entendi, para adicionar a um DataTable basta criar as colunas:

    DataTable dt = new DataTable();
    dt.Columns.Add("cd_produto");
    dt.Columns.Add("qtd_saldo");
    
    DataRow row = dt.NewRow();
    foreach (var item in results)
            {
                row["cd_produto"] = item.cod_produto;
    	    row["qtd_prod"] =  item.vcr_qt_saldo;
    	//Adiciona as linhas ao datatable a cada loop
    	dt.Rows.Add(row);
            }
        
    



    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta AlonsoLucas segunda-feira, 13 de fevereiro de 2017 12:34
    segunda-feira, 13 de fevereiro de 2017 12:19
  • Bom, declare o DataTable

    DataTable dt = new DataTable(); 
    dt.Clear();
    dt.Columns.Add("CD_PRODUTO");
    dt.Columns.Add("QTD_SALDO");
    
    E dentro do loop que você tem,coloque o código pra adicionar linhas

    DataRow linha= dt.NewRow();
    linha["CD_PRODUTO"] = item.cod_produto;
    linha["QTD_SALDO"] = item.vcr_qt_saldo;
    dt.Rows.Add(linha);
    Certo?
    -
    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta
    • Marcado como Resposta AlonsoLucas segunda-feira, 13 de fevereiro de 2017 12:34
    segunda-feira, 13 de fevereiro de 2017 12:20
  • vlw galera solucionaram meu problema 
    segunda-feira, 13 de fevereiro de 2017 12:34