Ejemplo n.º 1
0
 void AddStringComparingCause(string columnName, string value, StringPropertyComparingModes comparingModes, string parameterName, int length)
 {
     if (value != null)
     {
         if (value == "")
         {
             whereCauses.Add(string.Format("[{0}] = ''", columnName));
         }
         else
         {
             if (comparingModes == StringPropertyComparingModes.Contains)
             {
                 whereCauses.Add(string.Format("[{0}] like @{1}", columnName, parameterName));
                 parameters.Add(new SqlParameter("@" + parameterName, System.Data.SqlDbType.NVarChar, length * 3 + 2)
                 {
                     Value = SqlServerLikeValueBuilder.EscapeAndInclude(value)
                 });
             }
             else if (comparingModes == StringPropertyComparingModes.Equals)
             {
                 whereCauses.Add(string.Format("[{0}] = @{1}", columnName, parameterName));
                 parameters.Add(new SqlParameter("@" + parameterName, System.Data.SqlDbType.NVarChar, length * 3)
                 {
                     Value = SqlServerLikeValueBuilder.EscapeForEquals(value)
                 });
             }
             else if (comparingModes == StringPropertyComparingModes.StartsWith)
             {
                 whereCauses.Add(string.Format("[{0}] like @{1}", columnName, parameterName));
                 parameters.Add(new SqlParameter("@" + parameterName, System.Data.SqlDbType.NVarChar, length * 3 + 1)
                 {
                     Value = SqlServerLikeValueBuilder.Escape(value) + "%"
                 });
             }
             else if (comparingModes == StringPropertyComparingModes.EndsWith)
             {
                 whereCauses.Add(string.Format("[{0}] like @{1}", columnName, parameterName));
                 parameters.Add(new SqlParameter("@" + parameterName, System.Data.SqlDbType.NVarChar, length * 3 + 1)
                 {
                     Value = "%" + SqlServerLikeValueBuilder.Escape(value)
                 });
             }
             else
             {
                 WhereCauseBuilder inner = new WhereCauseBuilder(parameters, false);
                 if (comparingModes.HasFlag(StringPropertyComparingModes.Equals))
                 {
                     inner.AddStringComparingCause(columnName, value, StringPropertyComparingModes.Equals, "Equals" + columnName, length);
                 }
                 if (comparingModes.HasFlag(StringPropertyComparingModes.Contains))
                 {
                     inner.AddStringComparingCause(columnName, value, StringPropertyComparingModes.Contains, "Contains" + columnName, length);
                 }
                 if (comparingModes.HasFlag(StringPropertyComparingModes.StartsWith))
                 {
                     inner.AddStringComparingCause(columnName, value, StringPropertyComparingModes.StartsWith, "StartsWith" + columnName, length);
                 }
                 if (comparingModes.HasFlag(StringPropertyComparingModes.EndsWith))
                 {
                     inner.AddStringComparingCause(columnName, value, StringPropertyComparingModes.EndsWith, "EndsWith" + columnName, length);
                 }
                 whereCauses.Add("(" + inner.ToString() + ")");
             }
         }
     }
 }
Ejemplo n.º 2
0
 internal void AddStringComparingCause(string columnName, string value, StringPropertyComparingModes comparingModes, int length = 256)
 {
     AddStringComparingCause(columnName, value, comparingModes, columnName, length);
 }