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); }
private static QueryFunctionExpression ToDateTruncExpression(ParseTreeNode node) { return(new QueryFunctionExpression { KnownFunction = KnownQueryFunction.SqlDateTrunc, Arguments = node.Elements().OfType <ISqlElement>().ToList() }); }
private static void BuildElementsHolder(ParseTreeNode n) { n.AstNode = new ElementsHolder { DebugName = "expressionList", Elements = n.Elements() }; }