Я немного опоздал на игру, но мне нравятся методы расширения:
public static class FuncHelper
{
public static Predicate<T> ToPredicate<T>(this Func<T,bool> f)
{
return x => f(x);
}
}
Тогда вы можете использовать его как:
List<int> list = new List<int> { 1, 3, 4, 5, 7, 9 };
Func<int, bool> isEvenFunc = x => x % 2 == 0;
var index = list.FindIndex(isEvenFunc.ToPredicate());
Хм, теперь я вижу метод расширения FindIndex. Это чуть более общий ответ, я думаю. Не очень сильно отличается от ConvertToPredicate либо.