/// <summary>
 /// 生成where命令。
 /// </summary>
 /// <param name="expression">带格式串的表达式。</param>
 /// <param name="value">值,忽略null和string.Empty。</param>
 /// <param name="operator">逻辑操作符。</param>
 /// <param name="valueFilter">值过虑器,value不为null或string.Empty时。</param>
 /// <returns></returns>
 public virtual ISelectCommandBuilder WhereIf(string expression, object value, WhereOperators @operator, WhereIfValueFilterDelegate <object> valueFilter = null)
 {
     _whereExpression?.WhereIf(expression, value, @operator, valueFilter);
     return(this);
 }
 /// <summary>
 /// 生成where命令。
 /// </summary>
 /// <param name="expression">带格式串的表达式。</param>
 /// <param name="value">值,忽略null和string.Empty。</param>
 /// <param name="operator">逻辑操作符。</param>
 /// <param name="valueFilter">值过虑器,value不为null或string.Empty时。</param>
 /// <returns></returns>
 public virtual IWhereExpression WhereIf(string expression, object value, WhereOperators @operator, WhereIfValueFilterDelegate <object> valueFilter = null)
 {
     if (!string.IsNullOrEmpty(expression) && value != null)
     {
         if (value is string && string.IsNullOrEmpty((string)value))
         {
             return(this);
         }
         return(Where(@operator, string.Format(expression, AddCommandParameter(valueFilter == null ? value : valueFilter(value)))));
     }
     return(this);
 }
 /// <summary>
 /// 生成where命令。
 /// </summary>
 /// <param name="expression">带格式串的表达式。</param>
 /// <param name="value">值,忽略null和string.Empty。</param>
 /// <param name="op">逻辑操作符:and、or,不区分大小写。</param>
 /// <param name="valueFilter">值过虑器,value不为null或string.Empty时。</param>
 /// <returns></returns>
 public virtual ISelectCommandBuilder WhereIf(string expression, object value, string op = "and", WhereIfValueFilterDelegate <object> valueFilter = null)
 {
     _whereExpression?.WhereIf(expression, value, op, valueFilter);
     return(this);
 }
 /// <summary>
 /// 生成where命令。
 /// </summary>
 /// <param name="expression">带格式串的表达式。</param>
 /// <param name="value">值,忽略null和string.Empty。</param>
 /// <param name="op">逻辑操作符:and、or,不区分大小写。</param>
 /// <param name="valueFilter">值过虑器,value不为null或string.Empty时。</param>
 /// <returns></returns>
 public virtual IWhereExpression WhereIf(string expression, string value, string op = "and", WhereIfValueFilterDelegate <string> valueFilter = null)
 {
     if (!string.IsNullOrEmpty(expression) && !string.IsNullOrEmpty(value))
     {
         return(Where(string.Format(expression, AddCommandParameter(valueFilter == null ? value : valueFilter(value))), op));
     }
     return(this);
 }