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 Dezembro



1. 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

Diego Gazotto Dezembro

Diego Gazotto Dezembro - Trabalha com programação para web há dois anos. É graduando em Processamento de Dados pela FATEC – TQR. Atua como desenvolvedor na plataforma .NET na POLITEC – TQR (www.politec.com.br). Verdadeiro entusiasta em arquitetura de sistemas web.