10.12.2008

Buscando Elementos dentro de una Lista Generica - List.FindAll(Predicado)

En el post anterior, explicamos y hicimos un pequeño ejemplo acerca de como buscar un elemento dentro de una lista genérica, utilizando el método List<T>.Find. En esta oportunidad vamos a trabajar con el método FindAll de una lista genérica.

De acuerdo al msdn, el método FindAll obtiene todos los elementos que concuerden con las condiciones definidas por el predicado específico. Esto quiere decir que a diferencia del método Find que devuelve el primer objeto que cumple con el predicado, este método devuelve la lista de todos los objetos que cumplen con el predicado.

En este ejemplo vamos a buscar todas las personas que viven en México, y para tal fin vamos a utilizar la clase persona utilizada en el post anterior, y vamos a utilizar la lista cargada con los mismos datos del mismo post. Es importante recordar que esta aplicación de ejemplo, es una aplicación de consola.

El método para buscar las personas que viven en México a partir de una lista de personas es el siguiente.

image

Este método recibe la lista de objetos de instancia de persona que se va a recorrer para buscar solamente las que viven en México. El predicado para utilizar el método FindAll, es un handler a la función PersonaDeMexico, que se encarga de identificar si el objeto que se compara tiene como país México dentro de sus valores en la propiedad Pais. Hay que notar que al igual que el método Find, FindAll solo requiere una llamada al método, pero internamente se recorre toda la lista comparando todos los objetos que hay dentro de ella a través del método especificado en el predicado, en este caso PersonaDeMexico. FindAll devuelve todos los objetos que cumplieron de forma positiva en el predicado y los retorna al método que lo invoca. El método PersonaDeMexico que se utiliza en el predicado se presenta a continuación.

image

El método PersonaDeMexico, solamente compara la propiedad país contra el valor “Mexico” y retorna verdadero si la condición de cumple.

Para invocar el método BuscarPersonasDeMexico, se procede tal y como lo muestra el siguiente código.

image

 

 

 

 

 

El resultado al ejecutar el programa anterior es el siguiente:

image

No hay comentarios: