Revenj.DatabasePersistence.Postgres.QueryGeneration.QueryComposition.QueryParts.ProcessSetOperators C# (CSharp) Method

ProcessSetOperators() private method

private ProcessSetOperators ( StringBuilder sb, List operators ) : void
sb StringBuilder
operators List
return void
        private void ProcessSetOperators(StringBuilder sb, List<ResultOperatorBase> operators)
        {
            foreach (var it in operators)
            {
                sb.AppendLine();
                var ero = it as ExceptResultOperator;
                var iro = it as IntersectResultOperator;
                var uro = it as UnionResultOperator;
                var cro = it as ConcatResultOperator;
                if (ero != null)
                {
                    sb.AppendLine("EXCEPT");
                    sb.AppendLine(SqlGeneratorExpressionTreeVisitor.GetSqlExpression(ero.Source2, this));
                }
                else if (iro != null)
                {
                    sb.AppendLine("INTERSECT");
                    sb.AppendLine(SqlGeneratorExpressionTreeVisitor.GetSqlExpression(iro.Source2, this));
                }
                else
                {
                    if (OrderBy.Count > 0)
                    {
                        sb.Insert(0, '(');
                        sb.AppendLine(")");
                    }
                    SubQueryExpression sqe;
                    if (uro != null)
                    {
                        sb.AppendLine("UNION");
                        sqe = uro.Source2 as SubQueryExpression;
                    }
                    else
                    {
                        sb.AppendLine("UNION ALL");
                        sqe = cro.Source2 as SubQueryExpression;
                    }
                    foreach (var ro in ResultOperators)
                    {
                        if (ro is UnionResultOperator == false && ro is ConcatResultOperator == false)
                            sqe.QueryModel.ResultOperators.Add(ro);
                    }
                    sb.AppendLine(SqlGeneratorExpressionTreeVisitor.GetSqlExpression(sqe, this));
                }
            }
        }