Wednesday, 24 August 2011

What is Predicate?


What is Predicate<T>?

Simply put it is a delegate which is looking for a method that accepts one parameter and returns true or false.

It is used by several methods in .Net Framework mostly in List<T> and Array.

for example ,If you have a list of Person class and try to find out who is less than 30 

public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }


var persons = new List<Person>()
                              {
                                  new Person(){Name="azadeh",Age=30},
                                  new Person(){Name="elham",Age=30},
                                  new Person(){Name="maryam",Age=31},
                                  new Person(){Name="asal",Age=28},
                                  new Person(){Name="arezoo",Age=27},
                                
                              };


You will see that all of them return a same result.


var inTwenties1 = persons.FindAll(x => x.Age < 30);
var inTwenties2 = persons.FindAll(Test);
var inTwenties3 = persons.FindAll(delegate(Person p) { return p.Age < 30; });

public static bool Test(Person p)
        {
            return p.Age < 30;
        }


Predicate <T> or Func<T, bool>?
These two are exactly same. The only difference is that Predicate is older than Func<T, bool>.






Post a Comment