public QueryBase(QueryProviderBase provider)
 {
     if (provider == null)
     {
         throw new ArgumentNullException(nameof(provider));
     }
     this.provider = provider;
     Expression    = Expression.Constant(this);
 }
 public QueryBase(QueryProviderBase provider, Expression expression)
 {
     if (provider == null)
     {
         throw new ArgumentNullException(nameof(provider));
     }
     if (expression == null)
     {
         throw new ArgumentNullException(nameof(expression));
     }
     if (!typeof(IQueryable <T>).IsAssignableFrom(expression.Type))
     {
         throw new ArgumentOutOfRangeException(nameof(expression));
     }
     this.provider = provider;
     Expression    = expression;
 }