public override void ToString(StringBuilder sb, IQueryWithParams query) { if (this.op == CriteriaOperator.Like || this.op == CriteriaOperator.NotLike) { var valueCriteria = this.right as ValueCriteria; if (query.Dialect.IsCaseSensitive() && !ReferenceEquals(null, valueCriteria) && valueCriteria.Value is string) { sb.Append("UPPER("); this.left.ToString(sb, query); sb.Append(this.op == CriteriaOperator.Like ? ") LIKE UPPER(" : ") NOT LIKE UPPER("); this.right.ToString(sb, query); sb.Append(")"); } else { this.left.ToString(sb, query); sb.Append(this.op == CriteriaOperator.Like ? " LIKE " : " NOT LIKE "); this.right.ToString(sb, query); } } else { this.left.ToString(sb, query); sb.Append(opText[(int)this.op - (int)CriteriaOperator.AND]); this.right.ToString(sb, query); } }
public string ToString(IQueryWithParams query) { var sb = new StringBuilder(256); ToString(sb, query); return(sb.ToString()); }
public static string Case(this IQueryWithParams query, Action <CaseBuilder> builder) { var cb = new CaseBuilder(); builder(cb); return(cb.ToString(query)); }
/// <summary> /// Converts the criteria to string in a string builder, /// while adding its params to the target query. /// </summary> /// <param name="sb">The string builder.</param> /// <param name="query">The target query.</param> public override void ToString(StringBuilder sb, IQueryWithParams query) { if (this.op == CriteriaOperator.Like || this.op == CriteriaOperator.NotLike) { var valueCriteria = this.right as ValueCriteria; if (query.Dialect.IsLikeCaseSensitive && !ReferenceEquals(null, valueCriteria) && valueCriteria.Value is string) { sb.Append("UPPER("); this.left.ToString(sb, query); sb.Append(this.op == CriteriaOperator.Like ? ") LIKE UPPER(" : ") NOT LIKE UPPER("); this.right.ToString(sb, query); sb.Append(")"); } else { this.left.ToString(sb, query); sb.Append(this.op == CriteriaOperator.Like ? " LIKE " : " NOT LIKE "); this.right.ToString(sb, query); } } else { sb.Append('('); this.left.ToString(sb, query); sb.Append(opText[(int)this.op - (int)CriteriaOperator.AND]); this.right.ToString(sb, query); sb.Append(')'); } }
private Parameter AddParam(IQueryWithParams query, object value) { var param = query.AutoParam(); query.AddParam(param.Name, value); return(param); }
public override void ToString(StringBuilder sb, IQueryWithParams query) { var enumerable = value as IEnumerable; if (enumerable != null && !(value is string)) { int i = 0; sb.Append('('); foreach (var k in enumerable) { var param = query.AutoParam(); query.AddParam(param.Name, k); if (i++ > 0) { sb.Append(','); } sb.Append(param.Name); } sb.Append(')'); } else { var param = query.AutoParam(); query.AddParam(param.Name, this.value); sb.Append(param.Name); } }
public override void ToString(StringBuilder sb, IQueryWithParams query) { switch (this.op) { case CriteriaOperator.Paren: sb.Append('('); this.operand.ToString(sb, query); sb.Append(')'); break; case CriteriaOperator.Not: sb.Append("NOT ("); this.operand.ToString(sb, query); sb.Append(')'); break; case CriteriaOperator.IsNull: this.operand.ToString(sb, query); sb.Append(" IS NULL"); break; case CriteriaOperator.IsNotNull: this.operand.ToString(sb, query); sb.Append(" IS NOT NULL"); break; case CriteriaOperator.Exists: sb.Append("EXISTS ("); this.operand.ToString(sb, query); sb.Append(')'); break; } }
public string ToString(IQueryWithParams query) { StringBuilder sb = new StringBuilder(); sb.Append("CASE "); if (when.Count == 0) { throw new InvalidOperationException("There should be at least one WHEN/THEN pair."); } if (when.Count != then.Count) { throw new InvalidOperationException("WHEN/THEN pairs doesn't match."); } for (var i = 0; i < when.Count; i++) { sb.Append(" WHEN "); when[i].ToString(sb, query); sb.Append(" THEN "); var value = then[i]; if (value is BaseCriteria) { ((BaseCriteria)value).ToString(sb, query); } else if (value is IQueryWithParams) { sb.Append(((IQueryWithParams)value).ToString()); } else { new ValueCriteria(value).ToString(sb, query); } } if (!Object.ReferenceEquals(null, elseValue)) { sb.Append(" ELSE "); if (elseValue is BaseCriteria) { ((BaseCriteria)elseValue).ToString(sb, query); } else if (elseValue is IQueryWithParams) { sb.Append(((IQueryWithParams)elseValue).ToString()); } else { new ValueCriteria(elseValue).ToString(sb, query); } } sb.Append(" END"); return(sb.ToString()); }
public override void ToString(StringBuilder sb, IQueryWithParams query) { var enumerable = value as IEnumerable; if (enumerable != null && !(value is string)) { var c = 0; foreach (var k in enumerable) { c++; } int i = 0; sb.Append('('); foreach (var k in enumerable) { if (i++ > 0) { sb.Append(','); } if (c > 10) { if (k is int || k is short || k is uint || k is long || k is byte) { sb.Append(k.ToString()); continue; } } var param = query.AutoParam(); query.AddParam(param.Name, k); sb.Append(param.Name); } sb.Append(')'); } else { var param = query.AutoParam(); query.AddParam(param.Name, this.value); sb.Append(param.Name); } }
public override void ToString(StringBuilder sb, IQueryWithParams query) { switch (this.op) { case CriteriaOperator.Paren: sb.Append('('); this.operand.ToString(sb, query); sb.Append(')'); break; case CriteriaOperator.Not: sb.Append("NOT ("); this.operand.ToString(sb, query); sb.Append(')'); break; case CriteriaOperator.IsNull: this.operand.ToString(sb, query); sb.Append(" IS NULL"); break; case CriteriaOperator.IsNotNull: this.operand.ToString(sb, query); sb.Append(" IS NOT NULL"); break; case CriteriaOperator.Exists: sb.Append("EXISTS "); var tempsb = new StringBuilder(); this.operand.ToString(tempsb, query); var str = tempsb.ToString().Trim(); if (!str.StartsWith("(")) { sb.Append("("); } sb.Append(str); if (!str.StartsWith("(")) { sb.Append(')'); } break; } }
public override void ToString(StringBuilder sb, IQueryWithParams query) { var enumerable = value as IEnumerable; if (enumerable != null && !(value is string)) { var c = 0; foreach (var k in enumerable) { c++; } int i = 0; sb.Append('('); foreach (var k in enumerable) { if (i++ > 0) { sb.Append(','); } if (c > 10) { if (IsIntegerType(k)) { sb.Append(k.ToString()); continue; } else if (k is Enum) { sb.Append(Convert.ToInt64(k).ToString()); continue; } } sb.Append(AddParam(query, k).Name); } sb.Append(')'); } else { sb.Append(AddParam(query, this.value).Name); } }
public override void ToString(StringBuilder sb, IQueryWithParams query) { var enumerable = value as IEnumerable; if (enumerable != null && !(value is string)) { var c = 0; foreach (var k in enumerable) c++; int i = 0; sb.Append('('); foreach (var k in enumerable) { if (i++ > 0) sb.Append(','); if (c > 10) { if (k is int || k is short || k is uint || k is long || k is byte) { sb.Append(k.ToString()); continue; } } var param = query.AutoParam(); query.AddParam(param.Name, k); sb.Append(param.Name); } sb.Append(')'); } else { var param = query.AutoParam(); query.AddParam(param.Name, this.value); sb.Append(param.Name); } }
public static string Coalesce(this IQueryWithParams query, params object[] values) { if (values == null || values.Length == 0) { throw new ArgumentNullException("values"); } StringBuilder sb = new StringBuilder("COALESCE("); for (var i = 0; i < values.Length; i++) { if (i > 0) { sb.Append(", "); } var value = values[i]; if (value is ICriteria) { ((ICriteria)value).ToString(sb, query); } else if (value is IQueryWithParams) { sb.Append(((IQueryWithParams)value).ToString()); } else if (value is IField) { sb.Append(((IField)value).Expression); } else { var param = query.AutoParam(); query.AddParam(param.Name, value); sb.Append(param.Name); } } sb.Append(")"); return(sb.ToString()); }
/// <summary> /// Converts the criteria to string in a string builder, /// while adding its params to the target query. /// </summary> /// <param name="sb">The string builder.</param> /// <param name="query">The target query.</param> public override void ToString(StringBuilder sb, IQueryWithParams query) { if (op == CriteriaOperator.Like || op == CriteriaOperator.NotLike) { if (query.Dialect.IsLikeCaseSensitive && right is ValueCriteria valueCriteria && valueCriteria.Value is string) { sb.Append("UPPER("); left.ToString(sb, query); sb.Append(op == CriteriaOperator.Like ? ") LIKE UPPER(" : ") NOT LIKE UPPER("); right.ToString(sb, query); sb.Append(")"); } else { left.ToString(sb, query); sb.Append(op == CriteriaOperator.Like ? " LIKE " : " NOT LIKE "); right.ToString(sb, query); } }
public override void ToString(StringBuilder sb, IQueryWithParams query) { var enumerable = value as IEnumerable; if (enumerable != null && !(value is string)) { var c = 0; foreach (var k in enumerable) c++; int i = 0; sb.Append('('); foreach (var k in enumerable) { if (i++ > 0) sb.Append(','); if (c > 10) { if (IsIntegerType(k)) { sb.Append(k.ToString()); continue; } else if (k is Enum) { sb.Append(Convert.ToInt64(k).ToString()); continue; } } sb.Append(AddParam(query, k).Name); } sb.Append(')'); } else { sb.Append(AddParam(query, this.value).Name); } }
/// <summary> /// Converts to string. /// </summary> /// <param name="query">The query.</param> /// <returns> /// A <see cref="string" /> that represents this instance. /// </returns> /// <exception cref="InvalidOperationException"> /// There should be at least one WHEN/THEN pair. /// or /// WHEN/THEN pairs doesn't match. /// </exception> public string ToString(IQueryWithParams query) { StringBuilder sb = new StringBuilder(); sb.Append("CASE "); if (when.Count == 0) { throw new InvalidOperationException("There should be at least one WHEN/THEN pair."); } if (when.Count != then.Count) { throw new InvalidOperationException("WHEN/THEN pairs doesn't match."); } for (var i = 0; i < when.Count; i++) { sb.Append(" WHEN "); when[i].ToString(sb, query); sb.Append(" THEN "); var value = then[i]; if (value is ICriteria crit) { crit.ToString(sb, query); } else if (value is IQueryWithParams qprm) { sb.Append(qprm.ToString()); } else if (value is IField fld) { sb.Append(fld.Expression); } else { var param = query.AutoParam(); query.AddParam(param.Name, value); sb.Append(param.Name); } } if (elseValue is object) { sb.Append(" ELSE "); if (elseValue is ICriteria crit) { crit.ToString(sb, query); } else if (elseValue is IQueryWithParams qprm) { sb.Append(qprm.ToString()); } else if (elseValue is IField fld) { sb.Append(fld.Expression); } else { var param = query.AutoParam(); query.AddParam(param.Name, elseValue); sb.Append(param.Name); } } sb.Append(" END"); return(sb.ToString()); }
/// <summary> /// Converts the criteria to string. /// </summary> /// <param name="sb">The string builder.</param> /// <param name="query">The query.</param> public override void ToString(StringBuilder sb, IQueryWithParams query) { sb.Append(name); }
public string ToString(IQueryWithParams query) { StringBuilder sb = new StringBuilder(); sb.Append("CASE "); if (when.Count == 0) throw new InvalidOperationException("There should be at least one WHEN/THEN pair."); if (when.Count != then.Count) throw new InvalidOperationException("WHEN/THEN pairs doesn't match."); for (var i = 0; i < when.Count; i++) { sb.Append(" WHEN "); when[i].ToString(sb, query); sb.Append(" THEN "); var value = then[i]; if (value is ICriteria) ((ICriteria)value).ToString(sb, query); else if (value is IQueryWithParams) sb.Append(((IQueryWithParams) value).ToString()); else if (value is IField) sb.Append(((IField) value).Expression); else { var param = query.AutoParam(); query.AddParam(param.Name, value); sb.Append(param.Name); } } if (!Object.ReferenceEquals(null, elseValue)) { sb.Append(" ELSE "); if (elseValue is ICriteria) ((ICriteria)elseValue).ToString(sb, query); else if (elseValue is IQueryWithParams) sb.Append(((IQueryWithParams)elseValue).ToString()); else if (elseValue is IField) sb.Append(((IField)elseValue).Expression); else { var param = query.AutoParam(); query.AddParam(param.Name, elseValue); sb.Append(param.Name); } } sb.Append(" END"); return sb.ToString(); }
/// <summary> /// Converts the criteria to its string representation while /// adding its parameters to the target query. /// </summary> /// <param name="sb">The string builder.</param> /// <param name="query">The target query to add params into.</param> public override void ToString(StringBuilder sb, IQueryWithParams query) { sb.Append(this.expression); }
public override void ToString(StringBuilder sb, IQueryWithParams query) { sb.Append(this.name); }
public virtual void ToString(StringBuilder sb, IQueryWithParams query) { throw new NotImplementedException(); }
private Parameter AddParam(IQueryWithParams query, object value) { var param = query.AutoParam(); query.AddParam(param.Name, value); return param; }