示例#1
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine(QuerySource);
                ParsingTracer.IncIndentLevel();

                if (_index == null)
                {
                    SetSubIndex(parser);

                    _index = new FieldIndex[_subIndex.Length];

                    for (var i = 0; i < _subIndex.Length; i++)
                    {
                        var col = QuerySource.SubSql.Select.Columns[_subIndex[i].Index];
                        _index[i] = new FieldIndex {
                            Index = QuerySource.SqlQuery.Select.Add(col), Field = this
                        };
                    }
                }

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine(QuerySource);
                return(_index);
            }
示例#2
0
            public GroupBy(
                SqlQuery sqlQuery,
                QuerySource groupQuery,
                QuerySource originalQuery,
                LambdaInfo keySelector,
                QuerySource elementSource,
                Type groupingType,
                bool isWrapped,
                ISqlExpression[] byExpressions)
                : base(sqlQuery, keySelector, groupQuery)
            {
                ParsingTracer.IncIndentLevel();

                OriginalQuery = originalQuery;
                ElementSource = elementSource;
                GroupingType  = groupingType;
                IsWrapped     = isWrapped;
                ByExpressions = byExpressions;

                var field = new GroupByColumn(this);

                Fields.Add(field);

                Members.Add(groupingType.GetProperty("Key"), field);

                ParsingTracer.DecIndentLevel();
            }
示例#3
0
        public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
        {
            ParsingTracer.WriteLine(this);
            ParsingTracer.IncIndentLevel();

            if (_indexes == null)
            {
                var indexes = new List <FieldIndex>(Fields.Count);

                foreach (var field in Fields)
                {
                    foreach (var idx in field.Select(parser))
                    {
                        indexes.Add(new FieldIndex {
                            Index = idx.Index, Field = field
                        });
                    }
                }

                _indexes = indexes.ToArray();
            }

            ParsingTracer.DecIndentLevel();
            return(_indexes);
        }
示例#4
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> _)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine("table", Table);
                ParsingTracer.IncIndentLevel();

                var index = new[] { new FieldIndex {
                                        Index = Table.SqlQuery.Select.Add(Field, Field.Alias), Field = this
                                    } };

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine("table", Table);
                return(index);
            }
示例#5
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine(GroupBySource.BaseQuery);
                ParsingTracer.IncIndentLevel();

                if (_index == null)
                {
                    _index = GroupBySource.BaseQuery.Select(parser);
                }

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine(GroupBySource.BaseQuery);
                return(_index);
            }
示例#6
0
            public override FieldIndex[] Select <T>(ExpressionParser <T> parser)
            {
                ParsingTracer.WriteLine(this);
                ParsingTracer.WriteLine(QuerySource);
                ParsingTracer.IncIndentLevel();

                if (_index == null)
                {
                    if (_sqlExpression == null)
                    {
                        _sqlExpression = Parse(parser, QuerySource.Sources);
                    }

                    _index = new[] { new FieldIndex {
                                         Index = QuerySource.SqlQuery.Select.Add(_sqlExpression, _alias), Field = this
                                     } };
                }

                ParsingTracer.DecIndentLevel();
                ParsingTracer.WriteLine(QuerySource);
                return(_index);
            }
示例#7
0
        protected QuerySource(SqlQuery sqlQuery, LambdaInfo lambda, params QuerySource[] baseQueries)
        {
            SqlQuery = sqlQuery;
            Lambda   = lambda;

            _sources = baseQueries;

#if DEBUG && TRACE_PARSING
            ParsingTracer.WriteLine(lambda);
            ParsingTracer.WriteLine(this);

            foreach (var query in baseQueries)
            {
                ParsingTracer.WriteLine("base", query);
            }

            foreach (var field in Fields)
            {
                ParsingTracer.WriteLine("field ", field);
            }

            ParsingTracer.IncIndentLevel();
#endif
        }