/// <summary> /// Create a new query to rewrite. /// </summary> /// <param name="query">The actual query.</param> /// <param name="provider">The provider to rewrite the query.</param> protected RewriteQueryable(IQueryable query, RewriteQueryProvider provider) { if (query is null) { throw new ArgumentNullException(nameof(query)); } if (provider is null) { throw new ArgumentNullException(nameof(provider)); } Query = query; Provider = provider; }
/// <summary> /// Rewrite a given query. /// </summary> /// <typeparam name="T">The type of the query data.</typeparam> /// <param name="value">The query to rewrite.</param> /// <param name="rewriter">The rewriter to rewrite the query.</param> /// <returns>The rewritten query.</returns> public static IOrderedQueryable <T> Rewrite <T>(this IOrderedQueryable <T> value, ExpressionVisitor rewriter) { if (value == null) { throw new ArgumentNullException(nameof(value)); } if (rewriter == null) { throw new ArgumentNullException(nameof(rewriter)); } var provider = new RewriteQueryProvider(value.Provider, rewriter); return(new RewriteQueryable <T>(value, provider)); }
/// <summary> /// Rewrite a given query. /// </summary> /// <param name="value">The query to rewrite.</param> /// <param name="rewriter">The rewriter to rewrite the query.</param> /// <returns>The rewritten query.</returns> public static IOrderedQueryable Rewrite(this IOrderedQueryable value, ExpressionVisitor rewriter) { if (value == null) { throw new ArgumentNullException(nameof(value)); } if (rewriter == null) { throw new ArgumentNullException(nameof(rewriter)); } var provider = new RewriteQueryProvider(value.Provider, rewriter); return((IOrderedQueryable)Activator.CreateInstance( typeof(RewriteQueryable <>).MakeGenericType(value.ElementType), value, provider)); }
/// <summary> /// Create a new query to rewrite. /// </summary> /// <param name="query">The actual query.</param> /// <param name="provider">The provider to rewrite the query.</param> public RewriteDbQueryable(IQueryable query, RewriteQueryProvider provider) : base(query, provider) { }