private static void AnalyzeRollup( GroupByClauseElementRollupOrCube rollup, IList<ExprNode> expressions) { foreach (var ex in rollup.RollupExpressions) { if (ex is GroupByClauseElementExpr) { expressions.Add(((GroupByClauseElementExpr) ex).Expr); } else { var combined = (GroupByClauseElementCombinedExpr) ex; expressions.AddAll(combined.Expressions); } } }
private static void GroupByAddRollup( GroupByClauseElementRollupOrCube spec, GroupByRollupNodeBase parent, IList<ExprNode> exprNodes) { foreach (var rolledUp in spec.RollupExpressions) { if (rolledUp is GroupByClauseElementExpr) { var expr = (GroupByClauseElementExpr) rolledUp; exprNodes.Add(expr.Expr); parent.Add(new GroupByRollupNodeSingleExpr(expr.Expr)); } else { var combined = (GroupByClauseElementCombinedExpr) rolledUp; exprNodes.AddAll(combined.Expressions); parent.Add(new GroupByRollupNodeCombinedExpr(combined.Expressions)); } } }