public override void VisitOrderByClause(OrderByClause orderByClause, QueryModel queryModel, int index) { var visitor = new EnigmaExpressionTreeVisitor(_objectExpression); foreach (var ordering in orderByClause.Orderings) { visitor.VisitExpression(ordering.Expression); _objectExpression.OrderBy(ordering.OrderingDirection); } base.VisitOrderByClause(orderByClause, queryModel, index); }
public override void VisitResultOperator(ResultOperatorBase resultOperator, QueryModel queryModel, int index) { base.VisitResultOperator(resultOperator, queryModel, index); if (resultOperator is FirstResultOperator) { _objectExpression.Executor.Take(1); return; } var takeResultOperator = resultOperator as TakeResultOperator; if (takeResultOperator != null) { var countConstantExpression = takeResultOperator.Count as ConstantExpression; if (countConstantExpression != null) { _objectExpression.Take = (int)countConstantExpression.Value; } return; } var skipResultOperator = resultOperator as SkipResultOperator; if (skipResultOperator != null) { var countConstantExpression = skipResultOperator.Count as ConstantExpression; if (countConstantExpression != null) _objectExpression.Skip = (int)countConstantExpression.Value; return; } var contains = resultOperator as ContainsResultOperator; if (contains != null) { var visitor = new EnigmaExpressionTreeVisitor(_objectExpression); visitor.VisitExpression(contains.Item); _objectExpression.Contains(); return; } var any = resultOperator as AnyResultOperator; if (any != null) { _objectExpression.Any(); return; } }
public override void VisitMainFromClause(MainFromClause fromClause, QueryModel queryModel) { var visitor = new EnigmaExpressionTreeVisitor(_objectExpression); visitor.VisitExpression(fromClause.FromExpression); //_objectExpression.AddParameter(fromClause.ItemType, fromClause.ItemName); }
public override void VisitWhereClause(WhereClause whereClause, QueryModel queryModel, int index) { var predicate = whereClause.Predicate; var visitor = new EnigmaExpressionTreeVisitor(_objectExpression); visitor.VisitExpression(predicate); base.VisitWhereClause(whereClause, queryModel, index); }