Los Predicate de .Net

 

No terminé de entender esto hasta que me tocó “obligatoriamente” utilizar esto en unos desarrollos que estaba haciendo.

Como hacer para que en una lista de objetos me busque uno específico con el método Find(), pues bueno, acá te pongo un escenario:

 

Tengo una clase del típico persona…

public class Persona
    {
        public Decimal IdPersona { get; set; }
        public String Nombre { get; set; }
        public String Apellido { get; set; }
        public Decimal Edad { get; set; }
        public String EstadoCivil { get; set; }
     }

Ahora, desde mi programa principal creo una lista y de mi clase Persona.

List<Persona> lisPersona = new List<Persona>();

Haremos de cuenta que tenemos un método que llena mi lista de personas o mejor creamos un for de 5:

for (Int16 i = 10; i <= 14; i++)
                {
                    Persona persona = new Persona();
                    persona.IdPersona = i;
                    persona.Nombre = “Nombre ” + i;
                    persona.Apellido = “Apellido ” + i;
                    persona.Edad = i + 15;
                    lisPersona.Add(persona);
                }

Luego creamos 2 métodos “predicate”

private Boolean BuscaPersona(Persona objPersona)
        {
            if (objPersona.Edad == 26)
                return true;
            else
                return false;
        }

private Boolean BuscaAlgunasPersona(Persona objPersona)
        {
            if (objPersona.Edad > 26)
                return true;
            else
                return false;
        }

 

y lo usamos así

Persona newPersona = lisPersona.Find(BuscaPersona);

Si el resultado de Predicate es verdadero devolverá un objeto de persona, el primero que encuentre, pero si se usa el objeto FindAll(), devolverá los objetos que cumplan con la condición.

List<Persona> newListPersona =  lisPersona.FindAll(BuscaAlgunasPersona);

Espero que esta información les sirva.

Saludos.

Anuncios

3 pensamientos en “Los Predicate de .Net

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s