在列表扩展方法中使用IEnumerable FirstOrDefault?

是否可以在列表扩展方法中使用IEnumerable FirstOrDefault?我收到错误消息“列表不包含FirstOrDefault的定义”?

public static class Question
{

    public static Option<T> Lookup<T>(this List<T> enumerable, Func<T, bool> predicate)
    {
        if (enumerable == null)
        {
            return Option<T>.None;
        }

        var val = enumerable.FirstOrDefault(predicate);

        return val == null ? Option<T>.None : Option<T>.Some(val);
    }

    public static void Run()
    {
        bool isOdd(int i) => i % 2 == 1;

        var none = new List<int>().Lookup(isOdd); // => None
        var some = new List<int> { 1 }.Lookup(isOdd); // => Some(1)
    }
}
评论