10.09.2008

Buscando Elementos dentro de una Lista Generica - List<T>.Find(Predicado)

Es muy común tener la necesidad de buscar objetos en una colección basado en un criterio de búsqueda. Normalmente en ciertos momentos del desarrollo de una aplicación que utilice colecciones de objetos – en especial objetos de negocio - nos vamos a enfrentar a la necesidad de llevar a cabo tareas como por ejemplo: necesito obtener todos los objetos dentro de la lista que cumplen con el criterio X, necesito todos los objetos que su índice es mayor que Y, etc.

Para llevar a cabo esta tarea de una manera simple, en .NET la clase List<> tiene una serie de métodos que permiten realizar búsqueda sobre listas de objetos utilizando predicados especificos en la llamada.

Vamos a utilizar el método Find para buscar el primer objeto que cumpla con un predicado que nosotros mismos vamos a especificar a través de un método. Vamos a usar como base la clase Persona que vemos en la siguiente figura.

Clase_Persona

Seguidamtente vamos a inicializar una lista de personas la cual utilizaremos como referencia durante todos los ejemplos que vamos a desarrollar:

InicializarLista

El método Find de acuerdo al msdn permite buscar un elemento que concuerde con las condiciones definidas por un predicado específico, y retorna el primer objeto con cumpla con esta condición en la lista. Por ejemplo, supongamos que queremos la primera persona que tenga como nombre Juan y su primer apellido sea Ramos. El primer paso es crear un método para buscar la persona deseada. En este caso, vamos a buscar a Juan Ramos y vamos a retornar verdadero cuando lo encontramos y falso cuando no es el objeto que buscamos – En este caso la condición se encuentra digitada de manera directa, pero esta podría hacer referencia a una propiedad, a un campo de texto en una interface gráfica, etc.

CompararPersona

Seguidamente, vamos a crear un método que invoca el método find a travez del predicado definido, el cual en este caso será el método CompararPersona. Nótese que este método se “invoca” solamente una vez desde la lista, aunque internamente, el método se llama una vez por objeto contenido en la lista hasta que se termine la lista o se encuentre el objeto.

 BuscarPersona

Ahora, desde el método main, invocamos el método BuscarPersona e imprimos el pais donde reside la persona a buscar.

FindBuscarPersona

Y listo, el resultado se puede ver en la siguiente figura.

image

No hay comentarios: