/// <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)); }
/// <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); })); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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; }
/// <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"); }