public Tuple <string, QueryParam> BuildSqlString(SqlDialect dialect, int seed) { QueryParam parameter = null; StringBuilder sql = new StringBuilder(); if (!string.IsNullOrWhiteSpace(TableAlias)) { sql.AppendFormat("{0}.{1} ", TableAlias, LeftColumn); } else { sql.AppendFormat("{0} ", LeftColumn); } string op = null; switch (BinaryOperation) { case ComparisonOperator.Equal: op = "="; break; case ComparisonOperator.GreaterOrEquals: op = ">="; break; case ComparisonOperator.GreaterThan: op = ">"; break; case ComparisonOperator.In: op = "IN"; break; case ComparisonOperator.IsNotNull: op = "IS NOT NULL"; break; case ComparisonOperator.IsNull: op = "IS NULL"; break; case ComparisonOperator.Like: op = "LIKE"; break; case ComparisonOperator.LikeNonCaseSensitive: op = dialect.PrintCaseIncensitiveLike(); break; case ComparisonOperator.LowerOrEquals: op = "<="; break; case ComparisonOperator.LowerThan: op = "<"; break; case ComparisonOperator.NotEqual: op = "<>"; break; case ComparisonOperator.NotLike: op = "NOT LIKE"; break; } sql.AppendFormat("{0} ", op); if (!string.IsNullOrWhiteSpace(RightColumn)) { if (!string.IsNullOrWhiteSpace(RightColumnTableAlias)) { sql.AppendFormat("{0}.{1} ", RightColumnTableAlias, RightColumn); } else { sql.AppendFormat("{0} ", RightColumn); } } else if (ParamValue != null) { string paramName = string.Format("qPm{0}", seed); parameter = new QueryParam(paramName, PropDbType) { Value = ParamValue }; sql.Append(dialect.CreateParameterName(paramName)); } return(Tuple.Create <string, QueryParam>(sql.ToString(), parameter)); }