public static IResultEnumerable <TSuccess, TFailure> Where <TSuccess, TFailure>(this IResultEnumerable <TSuccess, TFailure> source, Func <TSuccess, Result <Unit, TFailure> > failurePredicate) where TSuccess : notnull where TFailure : notnull => source .Select((Func <Result <TSuccess, TFailure>, Result <TSuccess, TFailure> >)(value => value .Bind((Func <TSuccess, Result <TSuccess, TFailure> >)(success => (Result <TSuccess, TFailure>)ResultExtensions.Map <Unit, TFailure, TSuccess>(failurePredicate .Invoke((TSuccess)success) , (Func <Unit, TSuccess>)(_ => (TSuccess)success))) )) ) .AsResultEnumerable();
public static IResultEnumerable <TSuccess, TFailure> Where <TSuccess, TFailure>(this IEnumerable <TSuccess> source, Func <TSuccess, Result <Unit, TFailure> > failurePredicate) => source .Select((Func <TSuccess, Result <TSuccess, TFailure> >)(success => (Result <TSuccess, TFailure>)ResultExtensions.Map <Unit, TFailure, TSuccess>(failurePredicate .Invoke((TSuccess)success) , (Func <Unit, TSuccess>)(_ => (TSuccess)success))) ) .AsResultEnumerable();