Beispiel #1
0
        /// <summary>
        /// Generates System.CodeDom.CodeExpression from the given expression.
        /// </summary>
        /// <param name="expression">Expression from which System.CodeDom.CodeExpression is generated.</param>
        /// <returns>Generated System.CodeDom.CodeExpression.</returns>
        public virtual CodeExpression Visit(LinqTakeExpression expression)
        {
            CodeExpression source    = this.GenerateCode(expression.Source);
            CodeExpression skipCount = this.GenerateCode(expression.TakeCount);

            return(source.Call("Take", skipCount));
        }
        /// <summary>
        /// Resolves types for the specified expression.
        /// </summary>
        /// <param name="expression">The expression to resolve types for.</param>
        /// <returns>Expression with resolved types.</returns>
        public QueryExpression Visit(LinqTakeExpression expression)
        {
            var source     = this.ResolveTypes(expression.Source);
            var sourceType = ValidateSourceIsACollection(source);
            var takeCount  = this.ResolveTypes(expression.TakeCount);

            return(new LinqTakeExpression(source, takeCount, sourceType));
        }
Beispiel #3
0
 /// <summary>
 /// Evaluates the specified expression.
 /// </summary>
 /// <param name="expression">The expression to evaluate.</param>
 /// <returns>Value of the expression.</returns>
 public override QueryValue Visit(LinqTakeExpression expression)
 {
     return(this.VisitCollectionElementPrimitiveOrComplexTypeError(
                expression,
                delegate
     {
         return base.Visit(expression);
     }));
 }
Beispiel #4
0
        /// <summary>
        /// Visits a QueryExpression tree whose root node is the QueryTakeExpression.
        /// </summary>
        /// <param name="expression">The root node of the expression tree being visited.</param>
        /// <returns>Uri query string representing the expression.</returns>
        public override string Visit(LinqTakeExpression expression)
        {
            string source    = this.ComputeUriInternal(expression.Source);
            var    takeCount = this.ExpressionConverter.Convert(expression.TakeCount);

            this.SetTopQueryOption(takeCount);
            this.hasQueryOption = true;

            return(source);
        }
Beispiel #5
0
        /// <summary>
        /// Replaces the given expression.
        /// </summary>
        /// <param name="expression">The root node of the expression tree being visited.</param>
        /// <returns>Replaced expression.</returns>
        public virtual QueryExpression Visit(LinqTakeExpression expression)
        {
            QueryExpression source    = this.ReplaceExpression(expression.Source);
            QueryExpression takeCount = this.ReplaceExpression(expression.TakeCount);

            if (HasChanged(expression.Source, source) || HasChanged(expression.TakeCount, takeCount))
            {
                return(new LinqTakeExpression(source, takeCount, expression.ExpressionType));
            }

            return(expression);
        }
        /// <summary>
        /// Evaluates the specified expression.
        /// </summary>
        /// <param name="expression">The expression to evaluate.</param>
        /// <returns>Value of the expression.</returns>
        public virtual QueryValue Visit(LinqTakeExpression expression)
        {
            var source = this.EvaluateCollection(expression.Source);

            var takeCount = this.Evaluate(expression.TakeCount) as QueryScalarValue;

            if (takeCount == null)
            {
                throw new TaupoInvalidOperationException("Take count expression must be a primitive.");
            }

            return(source.Take(takeCount));
        }
Beispiel #7
0
 /// <summary>
 /// Filters the specified expression. Skip top expression.
 /// </summary>
 /// <param name="expression">The expression to filter.</param>
 /// <returns>The filtered expression</returns>
 public override QueryExpression Visit(LinqTakeExpression expression)
 {
     return(expression.Source.Accept(this));
 }
Beispiel #8
0
        /// <summary>
        /// Visits a QueryExpression tree whose root node is the QueryTakeExpression.
        /// </summary>
        /// <param name="expression">The root node of the expression tree being visited.</param>
        /// <returns>Uri query string representing the expression.</returns>
        public override string Visit(LinqTakeExpression expression)
        {
            string source = this.ComputeUriInternal(expression.Source);
            var takeCount = this.ExpressionConverter.Convert(expression.TakeCount);

            this.SetTopQueryOption(takeCount);
            this.hasQueryOption = true;

            return source;
        }
Beispiel #9
0
 /// <summary>
 /// Visits a QueryExpression tree whose root node is the LinqTakeExpression.
 /// </summary>
 /// <param name="expression">The root node of the expression tree being visited.</param>
 /// <returns>Uri query string representing the expression.</returns>
 public virtual string Visit(LinqTakeExpression expression)
 {
     throw new TaupoNotSupportedException("Not supported");
 }