C# - Converter List para DataTable


Neste artigo veremos como converter uma lista genérica tipada para um DataTable na linguagem C#.

Hoje vamos converter uma lista genérica para um DataTable. A princípio não vamos trabalhar com listas genéricas tipadas, vamos começar com listas simples.

Após converter para DataTable vamos exibir o conteúdo da lista em um DataGridView.

recursos:

Criando o projeto Windows Forms no VS 2019 Community

Abra o VS 2019 Community e clique em Create a New Project. A seguir selecione:

Selecione o template:  Windows Forms App (.NET Framework) e clique em Next;

Informe o nome do projeto como : WF_ListaDataTable e clique em Create.

No formulário Form1, inclua os controles:

Para gerar uma lista simples vamos criar uma classe chamada DataService :

using System;
using System.Collections.Generic;
namespace WF_ListaDataTable
{
    public class DataService
    {
       public static List<string[]> GetListaString()
       { 
            var lista = new List<string[]>();
            lista.Add(new string[] { "Linha 1", "Linha 1", "Linha 1" });
            lista.Add(new string[] { "Linha 2", "Linha 2" });
            lista.Add(new string[] { "Linha 3" });
            lista.Add(new string[] { "Linha 4", "Linha 4", "Linha 4", "Linha 4" });
            return lista;
        }
    }
}

Aqui estamos gerando uma lista simples com um array de strings. Podemos criar também listas númericas.

Agora desejamos converter esta lista para um DataTable para exibir no DataGridView do formulário Form1.

Para isso crie a classe ConverteListaDataTable com o código abaixo:

using System.Collections.Generic;
using System.Data;
namespace WF_ListaDataTable
{
    public class ConverteListaDataTable
    {
        public static DataTable ConverteListaString(List<string[]> lista)
        {
            // Cria Novo DataTable
            DataTable table = new DataTable();
            // Numero maximo de colunas
            int columns = 0;
            foreach (var array in lista)
            {
                if (array.Length > columns)
                {
                    columns = array.Length;
                }
            }
            // incluir colunas
            for (int i = 0; i < columns; i++)
            {
                table.Columns.Add();
            }
            // inclui linhas
            foreach (var array in lista)
            {
                table.Rows.Add(array);
            }
            return table;
        }
    }
}

Nesta classe temos o método estático  ConverteListaString(List<string[]> list) que recebe uma lista e retornada um DataTable.

Agora no formulário Form1, no evento Click do botão btnExibirDados inclua o código abaixo:

  private void BtnExibirDados_Click(object sender, EventArgs e)
  {
            dgvDados.DataSource = ConverteListaDataTable
                                            .ConverteListaString
                                            (
                                                  DataService.GetListaString()
                                            );
  }

Executando o projeto teremos o seguinte resultado:

Vemos assim a lista de strings sendo exibida no DataGridView após ser convertida para um DataTable.

Simples assim...

Pegue o projeto completo aqui: WF_ListaDataTable.zip

"E tu, ó menino, serás chamado profeta do Altíssimo, Porque hás de ir ante a face do Senhor, a preparar os seus caminhos;
Para dar ao seu povo conhecimento da salvação, Na remissão dos seus pecados;
Pelas entranhas da misericórdia do nosso Deus, Com que o oriente do alto nos visitou;"
Lucas 1:76-78

Referências:


José Carlos Macoratti