public QueryProvider getProvider() { return original.getProvider(); } }
/** * <p>Analogous to LINQ's Enumerable.Cast extension method.</p> * * @param clazz Target type * @param <T2> Target type * * @return Collection of T2 */ public static <T, T2> Queryable<T2> cast(final Queryable<T> source, final Class<T2> clazz) { return new BaseQueryable<T2>(source.getProvider(), clazz, source.getExpression()) { public Enumerator<T2> enumerator() { return new EnumerableDefaults.CastingEnumerator<>(source.enumerator(), clazz); } }; }
/** * Returns elements from a sequence as long as a * specified condition is true. The element's index is used in the * logic of the predicate function. */ public static <T> Queryable<T> takeWhileN(final Queryable<T> source, final FunctionExpression<Predicate2<T, Integer>> predicate) { return new BaseQueryable<T>(source.getProvider(), source.getElementType(), source.getExpression()) { public Enumerator<T> enumerator() { return new EnumerableDefaults.TakeWhileEnumerator<>( source.enumerator(), predicate.getFunction()); } }; }
/** * Bypasses elements in a sequence as long as a * specified condition is true and then returns the remaining * elements. The element's index is used in the logic of the * predicate function. */ public static <T> Queryable<T> skipWhileN(final Queryable<T> source, final FunctionExpression<Predicate2<T, Integer>> predicate) { return new BaseQueryable<T>(source.getProvider(), source.getElementType(), source.getExpression()) { public Enumerator<T> enumerator() { return new EnumerableDefaults.SkipWhileEnumerator<>( source.enumerator(), predicate.getFunction()); } }; }
/** * Projects each element of a sequence into a new form. */ public static <T, TResult> Queryable<TResult> select(Queryable<T> source, FunctionExpression<Function1<T, TResult>> selector) { return source.getProvider().createQuery( Expressions.call(source.getExpression(), "select", selector), functionResultType(selector)); }