Если вы немного разложите оператор, надеюсь, он станет более очевидным - это эквивалентный код.
Predicate<int> test = delegate(int i)
{
return (i % 2) == 0;
};
List<int> evenNumbers = list.FindAll(test);
Как вы можете видеть, он создал анонимного делегата (который компилятор превратится в закулисный метод)
Лично я всегда находил "встроенный" синтаксис анонимного делегатачтобы скрыть проблему больше, чем добавить ясности, тогда как та же самая конструкция, построенная с использованием лямбда-выражения, как только вы используете синтаксис, добавляет ясности
List<int> evenNumbers = list.FindAll(i => i % 2 == 0);