0

I'm not exactly sure why this code wont compile. Any help would be greatly appreciated. I'm trying to follow this SO thread

List<AgeRange> ageRanges = new List<AgeRange>();
List<Person> people = new List<Person>(); 

protected void Page_Load(object sender, EventArgs e)
{
    ageRanges.Add( new AgeRange {Min = 10, Max = 15 });
    ageRanges.Add( new AgeRange {Min = 20, Max = 25 });

    for (var i = 1; i <= 25; i++)
    {
        people.Add(new Person { Age = i });
    }

    var agePredicate = BuildAgePredicate(ageRanges);
    var result = people.Where(agePredicate);
}

static Expression<Func<Person, bool>> BuildAgePredicate(IEnumerable<AgeRange> ranges)
{
    var predicate = PredicateBuilder.False<Person>();
    foreach (var r in ranges)
    {
        // To avoid capturing the loop variable
        var r2 = r;
        predicate = predicate.Or(p => p.Age >= r2.Min && p.Age <= r2.Max);
    }
    return predicate;
}
Community
  • 1
  • 1
aberhamm
  • 13
  • 2
  • 3

0 Answers0