/// <summary>
 /// 非空字符串和空格字符串
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="build"></param>
 /// <param name="str"></param>
 /// <param name="rigthExpression"></param>
 /// <returns></returns>
 public static PredicateBuilder <T> AndIfNotEmpty <T>(this PredicateBuilder <T> build, string str, Expression <Func <T, bool> > rigthExpression) where T : class
 {
     if (!string.IsNullOrWhiteSpace(str))
     {
         build.expression = PredicateExtensions.And(build.Expression, rigthExpression);
     }
     return(build);
 }
 public static PredicateBuilder <T> AndIf <T>(this PredicateBuilder <T> build, bool condition, Expression <Func <T, bool> > rigthExpression) where T : class
 {
     if (condition)
     {
         build.expression = PredicateExtensions.And(build.Expression, rigthExpression);
     }
     return(build);
 }
 /// <summary>
 ///  非空对象
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="build"></param>
 /// <param name="obj"></param>
 /// <param name="rigthExpression"></param>
 /// <returns></returns>
 public static PredicateBuilder <T> AndIfNotNull <T>(this PredicateBuilder <T> build, object obj, Expression <Func <T, bool> > rigthExpression) where T : class
 {
     if (obj != null)
     {
         build.expression = PredicateExtensions.And(build.Expression, rigthExpression);
     }
     return(build);
 }
 /// <summary>
 /// 非空集合 not null and .Any()
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="build"></param>
 /// <param name="src"></param>
 /// <param name="rigthExpression"></param>
 /// <returns></returns>
 public static PredicateBuilder <T> AndIfNotEmpty <T>(this PredicateBuilder <T> build, IEnumerable src, Expression <Func <T, bool> > rigthExpression) where T : class
 {
     if (src != null && src.GetEnumerator().MoveNext())
     {
         build.expression = PredicateExtensions.And(build.Expression, rigthExpression);
     }
     return(build);
 }
 public PredicateBuilder <T> And(Expression <Func <T, bool> > rigthExpression)
 {
     this.expression = PredicateExtensions.And(this.expression, rigthExpression);
     return(this);
 }