IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

Converter DataTable em Lista em C# (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 20 de junho de 2025

Converting DataTable to List in C#

Frequentemente, no domínio da programação com C#, surge a necessidade de converter um DataTable em uma lista. Enquanto muitos novatos tropeçam nesta tarefa, eles frequentemente se deparam com respostas que simplesmente não são abrangentes o suficiente. Este tutorial visa preencher essa lacuna e fornecer um guia claro sobre como converter um DataTable para uma lista em C#.

O que é um DataTable?

Antes de mergulhar no processo de conversão, é crucial entender o que é um DataTable. Em C#, um objeto DataTable é uma representação de uma tabela de banco de dados na memória com linhas e colunas. Ele faz parte do namespace System.Data.

Para o propósito deste tutorial, vamos usar um exemplo DataTable nomeado dt. Isso pode ser visualizado conforme mostrado abaixo:

using System.Data;

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Category", typeof(string));
dt.Rows.Add(1, "Electronics");
dt.Rows.Add(2, "Books");

Primeiros passos com a conversão

Então, você tem seu DataTable dt, e agora está olhando para ele pensando, "Como eu converto isso?". Não se preocupe; Essa é uma pergunta que demonstra esforço de pesquisa. Existem principalmente dois métodos para converter DataTable em uma lista:

  1. Utilizando LINQ (Language Integrated Query)
  2. Usando o loop clássico foreach

Conversão usando LINQ

O método LINQ é uma ferramenta poderosa em C# que fornece uma maneira de consultar coleções de forma declarativa. Vamos ver como isso pode ser feito.

Defina um método da seguinte forma:

using System.Linq;
using System.Collections.Generic;

private static List<dynamic> LinqMethod(DataTable dt)
{
    return dt.AsEnumerable().Select(row =>
        new 
        {
            ID = row.Field<int>("ID"),
            Category = row.Field<string>("Category")
        }).ToList();
}

No código acima, o método de extensão AsEnumerable() é chamado no DataTable dt. Isso nos permite usar LINQ em cada DataRow no DataTable. O método cria uma lista de objetos dinâmicos, cada um representando uma linha do DataTable.

Conversão Usando Loop foreach

O loop foreach é uma maneira testada e comprovada de iterar sobre coleções em C#. Este método pode parecer um pouco mais longo, mas é fácil de entender e implementar.

Funciona assim:

private static List<Category> ForeachMethod(DataTable dt)
{
    List<Category> list = new List<Category>();

    // Iterates through each row within the data table
    foreach (DataRow row in dt.Rows)
    {
        var category = new Category
        {
            ID = Convert.ToInt32(row["ID"]),
            Name = row["Category"].ToString()
        };
        list.Add(category);
    }
    return list;
}

public class Category
{
    public int ID { get; set; }
    public string Name { get; set; }
}

No método ForeachMethod, o DataTable é percorrido usando um loop foreach. Para cada DataRow, um novo objeto Category é instanciado e adicionado ao list.

Aprofundando as técnicas avançadas de conversão

Depois de dominar o básico de converter um DataTable para uma lista em C#, existem várias técnicas avançadas e considerações que podem otimizar esse processo e adaptá-lo a cenários mais complexos. Vamos analisar algumas dessas técnicas com mais detalhes.

Usando Reflexão para Converter DataTable em Lista

A reflexão é uma ferramenta poderosa em C# que permite inspecionar os metadados dos tipos em tempo de execução. Vamos aproveitar seu poder:

using System.Reflection;

private static List<t> ConvertDataTableToList<t>(DataTable dt) where T : new()
{
    List<t> list = new List<t>();

    foreach (DataRow row in dt.Rows)
    {
        T obj = new T();
        foreach (DataColumn col in dt.Columns)
        {
            var prop = obj.GetType().GetProperty(col.ColumnName);
            if (prop != null && row[col] != DBNull.Value)
                prop.SetValue(obj, row[col]);
        }
        list.Add(obj);
    }
    return list;
}

Este método ConvertDataTableToList emprega reflexão, iterando sobre cada DataRow e coluna no DataTable. Para cada coluna, o programa busca uma propriedade correspondente no objeto genérico e define seu valor. Essa abordagem permite um método altamente reutilizável que pode converter qualquer DataTable para uma lista de objetos genéricos.

Uso

Para usar o código acima, basta chamar o método especificando o tipo:

List<Category> categories = ConvertDataTableToList<Category>(dt);

Com esse método, você não fica mais limitado a converter tabelas de dados específicas em tipos de objeto específicos. Em vez disso, você tem à sua disposição uma ferramenta versátil que pode lidar com uma variedade de cenários de dados.

Considerações sobre o desempenho

Embora o método de reflexão seja poderoso, vale ressaltar que ele pode ser mais lento, especialmente com tabelas de dados grandes. É sempre crucial medir o desempenho e compará-lo com os benefícios da reutilização e da facilidade de manutenção do código.

Iron Suite Toolkit para desenvolvedores .NET

Enquanto exploramos as complexidades de converter DataTable para listas em C#, às vezes, confiar em ferramentas externas pode simplificar nosso processo de desenvolvimento, especialmente quando se trata de operações mais complexas. É aí que entra o Iron Suite .

IronPDF: A potência em PDF

C# DataTable para Lista (Como Funciona Para Desenvolvedores) Figura 1 - IronPDF for .NET: A Biblioteca PDF para C#

Quando se trata de trabalhar com PDFs em C#, o IronPDF é revolucionário. Imagine ter convertido seu DataTable para uma lista e depois precisar gerar um relatório PDF a partir dela. O IronPDF permite criar, editar e extrair dados de documentos PDF sem esforço, simplificando o processo de conversão de informações derivadas de tabelas de dados em relatórios com aparência profissional.

A principal funcionalidade do IronPDF é a conversão de HTML para PDF , garantindo a preservação de layouts e estilos. Ele gera PDFs a partir de conteúdo da web, adequados para relatórios, faturas e documentação. Você pode converter arquivos HTML, URLs e strings HTML em arquivos PDF sem esforço.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

IronXL: Excelência em Operações com Excel

C# DataTable para Lista (Como Funciona Para Desenvolvedores) Figura 2 - IronXL for .NET: A Biblioteca Excel para C#

Se sua conversão DataTable leva a uma necessidade de tarefas relacionadas ao Excel, IronXL é a ferramenta a recorrer. Este produto proporciona operações perfeitas para leitura, edição e criação de planilhas do Excel. Com a conversão de tabela de dados para lista já feita, exportar seus dados para o formato Excel torna-se incrivelmente simples com o IronXL.

IronOCR: Tornando o texto reconhecível

C# DataTable para Lista (Como Funciona Para Desenvolvedores) Figura 3 - IronOCR for .NET: A Biblioteca OCR para C#

Pode haver momentos em que seu DataTable consiste em dados baseados em imagem, ou você precisa extrair texto de imagens. É aí que o IronOCR se destaca. Ele permite que desenvolvedores .NET leiam texto de imagens, tornando-se uma ferramenta complementar se suas operações de conversão DataTable envolverem imagens contendo informações textuais.

IronBarcode: Lendo nas entrelinhas

C# DataTable para Lista (Como Funciona Para Desenvolvedores) Figura 4 - IronBarcode for .NET: A Biblioteca de Código de Barras para C#

Por fim, o IronBarcode é a ferramenta ideal para todas as operações de código de barras em seus aplicativos. Suponha que seu DataTable ou a lista para a qual você o converteu consistam em informações de produtos com códigos de barras. Nesse caso, o IronBarcode fornece um mecanismo eficiente para ler e gerar códigos de barras, preenchendo a lacuna entre os dados brutos do produto e as informações legíveis por meio de códigos de barras.

Conclusão

Embora os métodos manuais de manipulação e conversão DataTable sejam cruciais para qualquer desenvolvedor C#, integrar ferramentas poderosas como as fornecidas pela Iron Suite pode aumentar exponencialmente sua produtividade e capacidades. É notável que cada licença de produto começa com $999, e o que é ainda mais atraente é que cada produto oferece uma avaliação gratuita. Se você está pensando em investir nessas ferramentas, temos uma oferta tentadora: você pode adquirir o pacote completo Iron Suite pelo preço de apenas dois produtos. Adotar soluções tão abrangentes pode, sem dúvida, elevar a qualidade e a eficiência dos seus projetos de desenvolvimento .NET .

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.