Ответ 1
Предикат - это делегат (объект функции), который возвращает логическое значение. Лямбда-выражения могут использоваться для определения любой анонимной функции, которая включает в себя предикаты, например. для выражения предиката в виде лямбда-выражения:
Predicate<int> isEven2 = x => x % 2 == 0;
который функционально эквивалентен:
Func<int,bool> isEven = x => x % 2 == 0;