Beispiel #1
0
        /// <summary>
        /// Converts the criteria to string.
        /// </summary>
        /// <param name="sb">The string builder.</param>
        /// <param name="query">The target query to add params to.</param>
        public override void ToString(StringBuilder sb, IQueryWithParams query)
        {
            switch (op)
            {
            case CriteriaOperator.Paren:
                sb.Append('(');
                operand.ToString(sb, query);
                sb.Append(')');
                break;

            case CriteriaOperator.Not:
                sb.Append("NOT (");
                operand.ToString(sb, query);
                sb.Append(')');
                break;

            case CriteriaOperator.IsNull:
                operand.ToString(sb, query);
                sb.Append(" IS NULL");
                break;

            case CriteriaOperator.IsNotNull:
                operand.ToString(sb, query);
                sb.Append(" IS NOT NULL");
                break;

            case CriteriaOperator.Exists:
                sb.Append("EXISTS (");
                operand.ToString(sb, query);
                sb.Append(')');
                break;
            }
        }
 /// <summary>
 ///   Adds a filter to query</summary>
 /// <typeparam name="T">
 ///   Query class</typeparam>
 /// <param name="self">
 ///   Query</param>
 /// <param name="filter">
 ///   Filter</param>
 /// <returns>
 ///   Query itself.</returns>
 public static T Where <T>(this T self, BaseCriteria filter) where T : IFilterableQuery
 {
     if (!ReferenceEquals(null, filter) && !filter.IsEmpty)
     {
         var statement = filter.ToString(self);
         self.Where(statement);
     }
     return(self);
 }
 /// <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);
         }
     }