¿Cómo lo haríamos? Supongamos que tenemos una lista de enteros y que queremos sacar dos listas, una con los pares y otra con los impares. El codigo sería el siguiente:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pruebas_Lenguaje_C_Sharp
{
public class Find_All_Generics
{
public Find_All_Generics(List
{
if (enteros != null)
__enteros = enteros;
else
throw new Exception("List passed cannot be null");
}
private List
public List
{
get
{
if (__enteros == null)
__enteros = new List
return __enteros;
}
set
{
__enteros = value;
}
}
public List
{
return Enteros.FindAll(FindPares);
}
public List
{
return Enteros.FindAll(FindImpares);
}
// Esta funcion debra devolver true para aquellos elementos que queramos filtrar.
// El metodo FindAll ejecutara este metodo por cada elemento de la lista y, si el
// resultado es True, lo añadirá al resultado
bool FindPares(int entero)
{
return (entero % 2 == 0);
}
bool FindImpares(int entero)
{
return (entero % 2 != 0);
}
}
}
En el Main, ponemos:
static void Main(string[] args)
{
List
for (int i = 0; i < 10; i++)
enteros.Add(i);
Find_All_Generics exampleList = new Find_All_Generics(enteros);
Console.WriteLine("Pares: ");
foreach (int i in exampleList.GetPares())
Console.WriteLine(i);
Console.WriteLine("Impares: ");
foreach (int i in exampleList.GetImpares())
Console.WriteLine(i);
Console.ReadKey();
}
Y comprobamos el resultado.
Esto es muy útil para realizar filtros sobre las listas. Por ejemplo,
- De una lista de empleados, puedo querer sacar una lista de los que son mayores de 40 años.
- De una lista de eventos deportivos, puedo querer filtrar los que son el domingo que viene
- etc...
Muchísimas gracias a Gloria por enseñarme el "fántastico mundo del FindAll" :-)
No hay comentarios.:
Publicar un comentario