public static MaybeNotNull <K> SelectMany <T, K>(this MaybeNotNull <T> source, Func <T, K> maybeSelector) { //Contract.Requires( source != null ); //Contract.Requires( maybeSelector != null ); //Contract.Ensures( //Contract.Result<MaybeNotNull<K>>() != null ); return(source.SelectMany(maybeSelector, (_, x) => x)); }
public static MaybeNotNull <R> SelectMany <T, K, R>(this MaybeNotNull <T> source, Func <T, K> maybeSelector, Func <T, K, R> resultSelector) { //Contract.Requires( source != null ); //Contract.Requires( maybeSelector != null ); //Contract.Requires( resultSelector != null ); return(source.SelectMany(t => Value(maybeSelector(t)), resultSelector)); }