Esempio n. 1
0
        public static string SubqueryToSql(Expression expr, SqlExprParams pars)
        {
            var selectCall   = expr;
            var callSub      = SqlFromList.ReplaceSubqueryBody(selectCall, pars.Replace);
            var subqueryFunc = Expression.Lambda(callSub).Compile();
            var subqueryExec = (ISqlSelectHasClause)subqueryFunc.DynamicInvoke(new object[0]);

            var selectStr = SqlSelect.TabStr(SqlSelect.SelectToString(subqueryExec.Clause, pars.ParamMode, pars.ParamDic));

            return($"({Environment.NewLine}{selectStr}{Environment.NewLine})");
        }
Esempio n. 2
0
 /// <summary>
 /// Agrega los parentesis si subQ es true
 /// </summary>
 static string SubqueryParenthesis(StatementToStrResult fromList)
 {
     switch (fromList)
     {
         case QueryToStrResult _:
             return $"({Environment.NewLine}{SqlSelect.TabStr(fromList.Sql)}{Environment.NewLine})";
         case TableToStrResult _:
             return fromList.Sql;
         default:
             throw new ArgumentException();
     }
 }
Esempio n. 3
0
        public static string ConditionalToSql(ConditionalExpression expr, SqlExprParams pars)
        {
            var b = new StringBuilder();

            Expression curr = expr;

            while (curr is ConditionalExpression cond)
            {
                b.Append("WHEN ");
                b.Append(ExprToSql(cond.Test, pars, false));
                b.Append(" THEN ");
                b.Append(ExprToSql(cond.IfTrue, pars, false));

                b.AppendLine();
                curr = cond.IfFalse;
            }

            b.Append("ELSE ");
            b.Append(ExprToSql(curr, pars, false));

            return(SqlSelect.TabStr($"{Environment.NewLine}CASE{Environment.NewLine}{SqlSelect.TabStr(b.ToString())}{Environment.NewLine}END"));
        }