C#(CSharp) Exemplo de Conversão de um List<> de uma classe qualquer para um DataTable.
Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 20/07/2021
Postado em : 20/07/2021
Conversão de um List<> para um DataTable.
Segue abaixo um pequeno exemplo de uma classe onde geramos um List<>, este List<> precisa ser convertido para um DataTable por um motivo qualquer, por exemplo para ser enviado como parâmetro em uma StoredProcedure para o SqlServer.
- Exemplo de como usar
List<Produto> produtos = new List<Produto>(); DataTable minhaTabelaProdutos = produtos.getDataTable();
Abaixo nossa classe exemplo Produto e também nossa classe ProdutoExtentions .
Em nossa classe ProdutoExtentions vamos encontrar o método getDataTable() onde convertemos nosso List<> para um DataTable.
/* * Exemplo de Conversão de uma List<> para um DataTable * * Visite nossa página http://www.codigoexpresso.com.br * * by Antonio Azevedo * * * Exemplo de uso * * List<Produto> produtos = new List<Produto>(); * * DataTable minhaTabelaProdutos = produtos.getDataTable(); * */ using System; using System.Collections.Generic; using System.Data; public class Produto { public Int32 idProduto { get; set; } = 0; public string descricao { get; set; } = ""; public DateTime dataCompra { get; set; } = DateTime.Now; public DateTime? dataUltimaVenda { get; set; } public Boolean ativo { get; set; } public float valor { get; set; } = 0f; public Produto() { } } // Extensão de nossa classe public static class ProdutoExtentions { /// <summary> /// Extensão para List<Produto> retornando uma tabela convertida com base nos dados de nosso List /// </summary> /// <param name="produtos"></param> /// <returns>DataTable</returns> public static DataTable getDataTable(this List<Produto> produtos) { // Criamos a tabela produtos DataTable table = new DataTable("produtos"); // criamos a estrutura da tabela com base na estrutura de nossa classe table.Columns.Add("idProduto", typeof(Int32)); table.Columns.Add("descricao", typeof(string)); table.Columns.Add("dataCompra", typeof(DateTime)); table.Columns.Add("dataUltimaVenda", typeof(DateTime)); table.Columns.Add("ativo", typeof(Boolean)); table.Columns.Add("valor", typeof(float)); // criamos a instancia de nossa linha DataRow row = table.NewRow(); // aqui vamos ler nosso list e inserir os dados em nossa tabela foreach (Produto produto in produtos) { row = table.NewRow(); row["idProduto"] = produto.idProduto; row["descricao"] = produto.descricao; row["dataCompra"] = produto.dataCompra; // Quando existe a possibilidade de retorno de um valor nulo recomendo o tratamento deste modo // tive alguns problemas e esta foi a maneira que consegui resolver, // se alguem resolveu de outra maneira por favor poste aqui para que possamos apresentar outras soluções !!! if (produto.dataUltimaVenda == null) { row["dataUltimaVenda"] = DBNull.Value; } else { row["dataUltimaVenda"] = produto.dataUltimaVenda; } row["ativo"] = produto.ativo; row["valor"] = produto.valor; table.Rows.Add(row); } // retorno de nossa tabela return table; } }
Espero ter ajudado, deixe seu comentário, ele é importante.
Links Relacionados
- Arquitetura CQRS
- Arrays em C#(CSharp)
- C#(CSharp) Converter inteiro para Hexadecimal e Hexadecimal para Inteiro
- C#(CSharp) Função para verificar se um determinado número é Primo
- Calcular Idade C# (CSharp), diferença anos entre duas datas
- Classe com Métodos de extensão C# (CSharp)
- Classe para Ler e Gravar Cookies - Asp.Net MVC 4 com C# (CSharp)
- Classe para tratar valores nulos vindos de nossa Query SQL, C#(CSharp).
- Classes anônimas em C#(CSharp)
- Comando nameof() C#(CSharp)
- Comando NULLIF no SQLServer.
- Compare duas strings ignorando maiúsculas e minúsculas C#(CSharp).
- Configurar tempo de uma sessão em Asp.Net MVC
- Consulta SQLServer com paginação
- Criar Classes Dinâmicas usando DynamicObject e ExpandoObject em C# (CSharp)
- Definir o dia em um DateTime.
- DELETE CASCADE no SqlServer
- Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
- Diferença entre parâmetros REF e OUT em C#(CSharp)
- DROP TABLE IF EXISTS no SQL Server.
- Emitir sons pelo auto-falante do computador em C# (CSharp)
- Estrangulando um monólito C#(CSharp)
- Exemplo de acesso a dados com SQL Server em C#.
- Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
- Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
- Extensões para DataReader, tratando valores de suas consultas SQL (DataReaderExtensions) C#(CSharp)
- Formatar CEP em C# (CSharp)
- Função para devolver data do próximo dia da semana informado C#(CSharp).
- Gerando números randômicos para sorteio de jogos de azar C#(CSharp)
- Grafana Loki e .NET Framework com C#
- Incrementando e decrementando variáveis em C#(CSharp)
- Injeção de dependência
- Ler string de conexão (connectionStrings) do arquivo Web.config Asp.Net MVC co C#(CSharp)
- Métodos de extensão C#
- O que é Camel Case e Pascal Case ?
- Ordenando um array com o comando OrderBy C#(CSharp)
- Padrão MVC
- Parar um loop foreach usando o comando break C#(CSharp).
- Recuperar a URL da página anterior em Asp.Net C# (CSharp)
- Recuperar a URL da página atual em Asp.Net C# (CSharp)
- Recuperar para código C# (CSharp) o valor de um componente de nossa página
- Retorna o IP da conexão do Cliente em Asp.Net MVC com C# (CSharp)
- Retorna os dados do Navegador do Cliente em Asp.Net MVC com C# (CSharp)
- Salvando CSV com cabeçalho no SQL Server Management Studio
- Separar String de caracteres C#(CSharp)
- Serilog e .NET Framework com C#
- Tipos de dados em C# (CSharp)
- Tipos de dados primitivos em C#(CSharp)
- Validando Valores nulos vindos de nosso Banco de Dados C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
- Verificar se uma string é um digito em C# (CSharp)
Comentários
Últimas Postagens
20/12/2023
Estrangulando um monólito C#(CSharp)
17/12/2023
Exemplo de consulta em SqlServer para encontrar uma chave Estrangeira
11/12/2023
Comando nameof() C#(CSharp)
06/12/2023
Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
03/12/2023
Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
01/12/2023
Salvando CSV com cabeçalho no SQL Server Management Studio
29/11/2023
DELETE CASCADE no SqlServer
08/10/2023
Grafana Loki e .NET Framework com C#
06/10/2023
Serilog e .NET Framework com C#
27/09/2023
Arquitetura CQRS
Todas as postagens...