Ejemplo n.º 1
0
        /// <summary>
        /// Execute an aggregation query.
        /// </summary>
        /// <typeparam name="K"></typeparam>
        /// <param name="keySelector">A Lambda expression which represents an accessor property of the field which shoule be aggregated.</param>
        /// <param name="aggregateType">One of the <see cref="AggregateType">AggregateType</see> enum members.</param>
        /// <returns>A single value, which represents the aggregate</returns>
        /// <remarks>Before using this function, make shure, that your database product supports the aggregate function, as defined in aggregateType.
        /// Polymorphy: StDev and Var only return the aggregate for the given class. All others return the aggregate for all subclasses.
        /// Transactions: Please note, that the aggregate functions always work against the database.
        /// Unsaved changes in your objects are not recognized.</remarks>
        public object ExecuteAggregate <K>(LE.Expression <Func <T, K> > keySelector, AggregateType aggregateType)
        {
            ExpressionTreeTransformer transformer =
                new ExpressionTreeTransformer(keySelector);
            string field = transformer.Transform();

            return(ExecuteAggregate(field, aggregateType));
        }
Ejemplo n.º 2
0
        internal Expression ToExpression(string expressionText, CompiledScope scope)
        {
            var tokens      = Lexer.Tokenize(expressionText).ToArray();
            var astNode     = Parser.Parse(tokens);
            var transformer = new ExpressionTreeTransformer(LanguageDefinition, scope);

            return(astNode.Transform(transformer));
        }
        private void TryPropagate(Expression dominatedExpression, Expression original, Expression replacement)
        {
            ExpressionTreeTransformer ett = new ExpressionTreeTransformer(original, replacement);

            ett.Visit(dominatedExpression);
        }
 private void TryPropagate(Expression dominatedExpression, Expression original, Expression replacement)
 {
     ExpressionTreeTransformer ett = new ExpressionTreeTransformer(original, replacement);
     ett.Visit(dominatedExpression);
 }