por Cesar Cassiano Schimanco

Order by e Select no DataTable / DataSet

Vou mostra um recurso muito interessante, o Select do DataTable. Com ele é possível fazer busca dentro do DataTable, similar ao SQL.
Também é possível ordenar itens no DataTable usando o Select - .Select(filterExpression, orderby); Vamos aos exemplos.

Busca no DataTable com LIKE e OR

//Criar o DataTable
DataTable dt = new DataTable("contatos");
//Adicionar colunas no DataTable (nome e cidade)
dt.Columns.Add("nome");
dt.Columns.Add("cidade");
//Inserir dados no DataTable
dt.Rows.Add("Cesar", "Porto Alegre");
dt.Rows.Add("Cassiano", "São Paulo");

//Fazer busca no DataTable com LIKE e OR, com ordenação pelo nome
//A consulta no DataTable retornará um DataRow[]
DataRow[] rows = dt.Select("nome LIKE '%Cassiano%' OR nome = 'cesar'");
//Fazer um foreach no DataRow
foreach (DataRow row in rows)
{
    //Responder na tela o resultado da busca
    Response.Write(row["nome"]);
}


Busca no DataTable com Order By

//Criar o DataTable
DataTable dt = new DataTable("contatos");
//Adicionar colunas no DataTable (nome e cidade)
dt.Columns.Add("nome");
dt.Columns.Add("cidade");
//Inserir dados no DataTable
dt.Rows.Add("Cesar", "Porto Alegre");
dt.Rows.Add("Cassiano", "São Paulo");

//Fazer busca e ordenação pelo nome e cidade
//A consulta no DataTable retornará um DataRow[]
//.Select(where, orderby);
DataRow[] rows = dt.Select("nome = 'Cassiano' AND cidade = 'São Paulo'", "nome ASC, cidade DESC");
//Fazer um foreach no DataRow
foreach (DataRow row in rows)
{
    //Responder na tela o resultado da busca
    Response.Write(row["nome"]);
}

 

Usar o método CopyToDataTable para converter um array de DataRow para DataTable.

dt = dt.Select("nome LIKE 'Cassiano'").CopyToDataTable();

 

Fazer uma consulta dentro do DataSet.
Alguns desenvolvedores confundem e acham que a consulta é feita dentro do DataSet, mas na verdade é no DataTable, o DataSet nestes casos é o conjunto de DataTables.
Para ficar mais claro, abaixo vou mostra um exemplo de como fazer uma busca no DataSet (DataTable).

//Criar o DataTable
DataTable dt = new DataTable("contatos");
//Adicionar colunas no DataTable (nome e cidade)
dt.Columns.Add("nome");
dt.Columns.Add("cidade");
//Inserir dados no DataTable
dt.Rows.Add("Cesar", "Porto Alegre");
dt.Rows.Add("Cassiano", "São Paulo");

//Criar um DataSet
DataSet ds = new DataSet();
//Inserir o DataTable no DataSet
ds.Tables.Add(dt);

//Fazer busca dentro do DataSet (DataTable)
//Perceba que esta consulta vai retornar novamente um DataTable
DataTable dtResultado = ds.Tables[0].Select("nome LIKE '%Cassiano%'", "nome ASC").CopyToDataTable();

//Remover do DataSet o DataTable atual
ds.Tables.Remove(dt);
//Adicionar o novo DataTable com o resultado da consulta
ds.Tables.Add(dtResultado);

//Fazer um for para pegar o itens do DataSet
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
    //Responder na tela o resultado da busca
    Response.Write(ds.Tables[0].Rows[i]["nome"]);
}

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...