quarta-feira, 1 de outubro de 2008

Filtrando Listas tipadas em C#

Uma grande facilidade da linguagem C# quando estamos trabalhando com listas tipadas (Generics) é a possibilidade de filtrarmos os objetos contidos dentro dela de acordo com alguma de suas propriedades. Vou demonstrar um exemplo dessa funcionalidade utilizando o mesmo projeto criado no artigo anterior (Ordenando listas tipadas em C#).

1º Passo: Vamos criar o método que irá validar se o objeto é condizente com a propriedade a ser validada como filtro do objeto. No exemplo queremos filtrar todos os objetos Pessoa a qual a idade da pessoa seja igual ou maior a 20 anos.


private static bool personFilter( Pessoa p )
{
return (p.Idade >= 20);
}

2º Passo: Vamos criar o método que será responsável por invocar a filtragem dos objetos da lista de acordo com a mesma e retornar uma “sublista” contendo somente os objetos que corresponderam a filtragem. Nesse passo utilizaremos a propriedade do Framework chamado de FindAll que realiza esta filtragem para nós de acordo com nosso método de filtragem que criamos no passo anterior.

private List <People> findPeople()
{

return this.getPessoas().FindAll(personFilter);
}

3º Passo:
Agora vamos criar o métod que exibe o resultado da filtragem dos objetos na tela.

protected void Page_Load(object sender, EventArgs e)
{

Response.Write("Pessoas com idade igual ou maior a 20");
foreach (Pessoa item in this.findPeople())
{

Response.Write(item.Nome + " " + item.Idade + " ");
}

}

4º Passo: Resultado exibido na tela.


Referência: http://msdn.microsoft.com/en-us/library/fh1w7y8z.aspx