/// <inheritdoc/>
        public Func <TParam1, TResult> Compile <TParam1, TResult>(Expression expression, ParameterExpression param1)
        {
            var visitor = new QueryTranslationVisitor();

            expression = visitor.Visit(expression);
            var query = Expression.Lambda <Func <TParam1, TResult> >(expression, param1);

            return(query.Compile());
        }
        /// <inheritdoc/>
        public Func <T> Compile <T>(Expression expression)
        {
            var visitor = new QueryTranslationVisitor();

            expression = visitor.Visit(expression);
            var query = Expression.Lambda <Func <T> >(expression);

            return(query.Compile());
        }