Como fazer consulta LINQ em um DataTable

linqOlá pessoal, tudo bom?

Não é possível fazer uma consulta LINQ diretamente sobre a coleção Rows do DataTable, porque o DataRowCollection não implementa IEnumerable<T>, nesse caso, é necessário usar o método AsEnumerable() do DataTable conforme exemplo abaixo:


protected void btnObter_Click(object sender, EventArgs e)
{
  SacadoDAOExemplo dados = new SacadoDAOExemplo();
  DataTable dt = dados.Obter(); //Método que retorna um DataTable de exemplo

  //Aplicando a consulta LINQ
  var resultado = from item in dt.AsEnumerable()
                  where item.Field<int>("sac_id") > 2
                  select item;

  //Varrendo o resultado
  foreach (var r in resultado)
    Response.Write(r.Field<string>("sac_nome") + "<br />");

  //* sac_id e sac_nome são colunas da tabela que está vindo como retorno no DataTable
}

AsEnumerable() retorna IEnumerable<DataRow> o que torna possível a aplicação de uma consulta LINQ.

Grande abraço,
Eduardo Henrique Rizo

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

Deixe um comentário