What is the difference between a lambda expression and a predicate in .NET?
A predicate is delegate (function object) that returns a boolean value. Lambda expressions can be used to define any anonymous function, which includes predicates, e.g. to express a predicate in the form of a lambda expression:
Predicate isEven2 = x => x % 2 == 0;
which is functionally equivalent to:
Func isEven = x => x % 2 == 0;