public static async ValueTask <V> GroupJoin <T, U, K, V>(this ValueTask <T> source, ValueTask <U> inner, Func <T, K> outerKeyMap, Func <U, K> innerKeyMap, Func <T, ValueTask <U>, V> project) { T t = await source.ConfigureAwait(false); return(project(t, inner.Where(u => default(EqDefault <K>).Equals(outerKeyMap(t), innerKeyMap(u))))); }
public static ValueTask <T> Filter <T>(this ValueTask <T> self, Func <T, bool> pred) => self.Where(pred);