Bienvenidos sean a este post, hoy veremos un metodo para los objetos List.
Este metodo nos devuelve el valor que busquemos en la lista, veamos su sintaxis:
lista.FindAll(predicado);
El metodo se aplica directamente a la lista, el predicado es el encargado de verificar si se encuentra o no, este puede ser una funcion o un operador lambda, el valor que nos devolvera seran todas las coincidencias que encuentre dentro de la lista, vamos a analizarlo mediante un ejemplo y para ello crearemos un nuevo archivo con el nombre de encontrar.cs y le agregaremos el siguiente codigo:
encontrar.cs
using System;
using System.Collections.Generic;
public class Program
{
static int Main()
{
int i=0;
List<string> nombres = new List<string>(5);
nombres.Add("enzo");
nombres.Add("martin");
nombres.Add("ariel");
nombres.Add("marta");
nombres.Add("javier");
List<string> datos = nombres.FindAll(verificar);
foreach(string n in datos)
{
i++;
Console.WriteLine("Coincidencia #{0}: {1}", i, n);
}
return 0;
}
static bool verificar(string dato)
{
return dato.StartsWith("m");
}
}
Antes de hablar del codigo en el Main veamos como es la funcion que usaremos con el metodo, esta funcion nos devolvera un valor de tipo booleano, a su vez recibira un dato que nos lo proveera el metodo FindAll y a ese dato le aplicaremos el metodo StatrsWith, el cual devolvera True si se existe alguno de lo contrario devolvera un False, con esto comentado pasemos a hablar sobre el Main, aqui lo primero que haremos sera definir una variable de tipo int que la usaremos mas adelante, lo siguiente sera definir una lista llamada nombres con cinco valores, luego asignaremos el resultado de aplicar el metodo a la lista en otro objeto de tipo List, esto es asi porque nos devolvera mas de una coincidencia (en caso de existir) para finalemente usar un bucle que nos devolvera todos los datos de la lista que contiene el resultado del metodo, en este bucle primero incrementaremos a i para mostrar el numero de coincidencia y el valor de cada pasada, con todo comentado veamos como es su salida:
C:\Users\tinchicus>encontrar.exe
Coincidencia #1: martin
Coincidencia #2: marta
C:\Users\tinchicus>
Observen que nos devolvio las dos coincidencias en el listado, tomemos el codigo anterior y vamos a modificarlo para trabajar con el operador lambda:
using System;
using System.Collections.Generic;
public class Program
{
static int Main()
{
int i=0;
List<string> nombres = new List<string>(5);
nombres.Add("enzo");
nombres.Add("martin");
nombres.Add("ariel");
nombres.Add("marta");
nombres.Add("javier");
List<string> datos = nombres.FindAll(c=>c.StartsWith("m"));
foreach(string n in datos)
{
i++;
Console.WriteLine("Coincidencia #{0}: {1}", i, n);
}
return 0;
}
}
El codigo es el mismo y tiene la misma conducta pero tendra dos diferencias principales, la primera sera la desaparicion de la funcion y la segunda sera el cambio del llamado por un operador lambda donde asignaremos el valor a una variable y en ella le aplicaremos el metodo que usabamos en la funcion anterior, si bien es mas simple tambien es mas limitado con respecto a la funcion pero eso queda a criterio de cada uno y necesidad del momento, si lo compilan y ejecutan obtendran la misma salida que antes.
En resumen, hoy hemos visto FindAll, que es, para que sirve, como se utiliza, un ejemplo practico para verlo como trabaja tanto con una funcion como con un operador lambda, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
