Desenvolvimento - C#
Recuperando valores de listas complexas
Generics, predicates... Quem é que já não ouviu falar ou leu sobre esses termos e ainda não sabe para que servem? Pois bem, neste artigo vamos conceituar e combinar esses dois “ingredientes mágicos” com o propósito de recuperar valores de listas.
por Diego Gazotto Dezembro1. Introdução
Generics, predicates... Quem é que já não ouviu falar ou leu sobre esses termos e ainda não sabe para que servem? Pois bem, neste artigo vamos conceituar e combinar esses dois “ingredientes mágicos” com o propósito de recuperar valores de listas.
Utilizaremos o VS 2005 para implementarmos esse exemplo.
2. Generics
Generics consiste em tipar uma coleção de modo a garantir que apenas um tipo de dados pertença a ela. Caso você tente inserir dados de outros tipos, o compilador não permitirá.
3. Criando Metadados
Vamos construir uma classe chamada Produtos com algumas propriedades que utilizaremos para implementar a nossa coleção tipada:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Produtos
/// </summary>
public class Produto
{
public Produto()
{
//
// TODO: Add constructor logic here
//
}
private int CdProduto;
public int Codigo
{
get { return CdProduto; }
set { CdProduto = value; }
}
private string NmProduto;
public string Nome
{
get { return NmProduto; }
set { NmProduto = value; }
}
private string DeProduto;
public string Descricao
{
get { return DeProduto; }
set { DeProduto = value; }
}
}
4. Criando coleção tipada
Utilizando a classe Produtos criada anteriormente, vamos criar uma coleção tipada utilizando generics:
Produto objProduto1 = new Produto();
objProduto1.Codigo = 1;
objProduto1.Nome = "Teste nome 1";
objProduto1.Descricao = "Teste descrição 1";
Produto objProduto2 = new Produto();
objProduto2.Codigo = 2;
objProduto2.Nome = "Teste nome 2";
objProduto2.Descricao = "Teste descrição 2";
System.Collections.Generic.List<Produto> arrProdutos = new
System.Collections.Generic.List<Produto>();
arrProdutos.Add(objProduto1);
arrProdutos.Add(objProduto2);
5. Predicates
Predicate representa um método que define os critérios para uma pesquisa em uma lista tipada, determinando se um item da lista atende ou não a estes critérios previamente estabelecidos.
6. Recuperando valores da coleção
O C# permite que utilizemos métodos denominados anônimos (in-line), para evitarmos a criação de um método exclusivo apenas para comparar o valor de uma propriedade dos objetos que compõem a nossa coleção tipada.
Abaixo temos um exemplo que procura um produto no qual a propriedade “Nome”
seja igual a “Teste nome 2”.
System.Collections.Generic.List<Produto> arrResposta =
arrProdutos.FindAll(new Predicate<Produto>(
delegate(Produto objProduto) {
return (objProduto.Nome == "Teste nome 2"); }));
Obs: É importante enfatizar que utilizamos um delegate para fazer um método in-line evitando um método exclusivo.
7. Finalizando
Neste artigo abordamos como utilizarmos predicates para recuperarmos valores de listas construídas com generics.
Espero ter contribuído!
Até o próximo!
Diego Gazotto Dezembro