Esempio n. 1
0
        private static SelectClause ToSelectClause(ParseTreeNode n)
        {
            var elements = n.Elements();
            var result   = new SelectClause
            {
                Source = (IColumnSource)n.ChildNodes[5].AstNode
            };

            var selectColumns = elements.OfType <SelectFieldExpression>().ToArray();

            if (selectColumns.Length == 0)
            {
                result.IsSelectAll = true;
                result.Fields      = null;
            }
            else
            {
                result.Fields.AddRange(selectColumns);
            }
            var topNode = n.ChildNodes[1].ChildNodes.ElementAtOrDefault(1);

            result.Top = topNode != null && topNode.Token != null?int.Parse(topNode.Token.ValueString) : (int?)null;

            result.IsDistinct = n.ChildNodes[2].ChildNodes.Any();
            result.JoinClauses.AddRange(elements.OfType <JoinClause>());
            result.WhereExpression = (ISqlElement)n.ChildNodes[7].AstNode;
            result.GroupBy         = (GroupByClause)n.ChildNodes[8].AstNode;
            result.Having          = (ISqlElement)n.ChildNodes[9].AstNode;
            return(result);
        }
Esempio n. 2
0
 private static QueryFunctionExpression ToDateTruncExpression(ParseTreeNode node)
 {
     return(new QueryFunctionExpression
     {
         KnownFunction = KnownQueryFunction.SqlDateTrunc,
         Arguments = node.Elements().OfType <ISqlElement>().ToList()
     });
 }
Esempio n. 3
0
 private static void BuildElementsHolder(ParseTreeNode n)
 {
     n.AstNode = new ElementsHolder
     {
         DebugName = "expressionList",
         Elements  = n.Elements()
     };
 }