Exemplo n.º 1
0
        public ApplyClause BindApply(IEnumerable <QueryToken> tokens)
        {
            ExceptionUtils.CheckArgumentNotNull(tokens, "tokens");

            var transformations = new List <TransformationNode>();

            foreach (var token in tokens)
            {
                switch (token.Kind)
                {
                case QueryTokenKind.Aggregate:
                    var aggregate = BindAggregateToken((AggregateToken)(token));
                    transformations.Add(aggregate);
                    aggregateExpressionsCache     = aggregate.Expressions;
                    state.AggregatedPropertyNames =
                        aggregate.Expressions.Select(statement => statement.Alias).ToList();
                    break;

                case QueryTokenKind.AggregateGroupBy:
                    var groupBy = BindGroupByToken((GroupByToken)(token));
                    transformations.Add(groupBy);
                    break;

                default:
                    var filterClause = this.filterBinder.BindFilter(token);
                    var filterNode   = new FilterTransformationNode(filterClause);
                    transformations.Add(filterNode);
                    break;
                }
            }

            return(new ApplyClause(transformations));
        }
Exemplo n.º 2
0
        public ApplyClause BindApply(IEnumerable<QueryToken> tokens)
        {
            ExceptionUtils.CheckArgumentNotNull(tokens, "tokens");

            var transformations = new List<TransformationNode>();
            foreach (var token in tokens)
            {
                switch (token.Kind)
                {
                    case QueryTokenKind.Aggregate:
                        var aggregate = BindAggregateToken((AggregateToken)(token));
                        transformations.Add(aggregate);
                        aggregateExpressionsCache = aggregate.Expressions;
                        state.AggregatedPropertyNames =
                            aggregate.Expressions.Select(statement => statement.Alias).ToList();
                        break;
                    case QueryTokenKind.AggregateGroupBy:
                        var groupBy = BindGroupByToken((GroupByToken)(token));
                        transformations.Add(groupBy);
                        break;
                    default:
                        var filterClause = this.filterBinder.BindFilter(token);
                        var filterNode = new FilterTransformationNode(filterClause);
                        transformations.Add(filterNode);
                        break;
                }
            }

            return new ApplyClause(transformations);
        }