Beispiel #1
0
        private SqlString GetSqlString(ICriteriaQuery criteriaQuery, SqlString[] columns, Parameter bogusParam)
        {
            if (columns.Length <= 1 || criteriaQuery.Factory.Dialect.SupportsRowValueConstructorSyntaxInInList)
            {
                var          wrapInParens     = columns.Length > 1;
                const string comaSeparator    = ", ";
                var          singleValueParam = SqlStringHelper.Repeat(new SqlString(bogusParam), columns.Length, comaSeparator, wrapInParens);

                var parameters = SqlStringHelper.Repeat(singleValueParam, Values.Length, comaSeparator, wrapInParens: false);

                //single column: col1 in (?, ?)
                //multi column:  (col1, col2) in ((?, ?), (?, ?))
                return(new SqlString(
                           wrapInParens ? StringHelper.OpenParen : string.Empty,
                           SqlStringHelper.Join(comaSeparator, columns),
                           wrapInParens ? StringHelper.ClosedParen : string.Empty,
                           " in (",
                           parameters,
                           ")"));
            }

            //((col1 = ? and col2 = ?) or (col1 = ? and col2 = ?))
            var cols = new SqlString(
                " ( ",
                SqlStringHelper.Join(new SqlString(" = ", bogusParam, " and "), columns),
                "= ",
                bogusParam,
                " ) ");

            cols = SqlStringHelper.Repeat(cols, Values.Length, " or ", wrapInParens: Values.Length > 1);
            return(cols);
        }
Beispiel #2
0
 private SqlString GetColumnNamesString(int scalarColumnIndex)
 {
     return(SqlStringHelper.Join(new SqlString(", "), Walker.SelectClause.ColumnNames[scalarColumnIndex]));
 }