/// <summary>
        /// 否
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="predicateCurrent">当前表达式</param>
        /// <returns><see cref="Expression{Func{T, bool}}"/></returns>
        public static Expression <Func <T, bool> > Not <T>(this Expression <Func <T, bool> > predicateCurrent) where T : class
        {
            ExpressionReplace ex = GenExpressionReplace <T>(out var expressionPara);
            var current          = ex.Replace(predicateCurrent);
            var body             = Expression.Not(current);

            return(Expression.Lambda <Func <T, bool> >(body, expressionPara));
        }
        /// <summary>
        /// 合并俩个表达式
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="expressionFirst">第一个表达式</param>
        /// <param name="expressionSecond">第二个表达式</param>
        /// <param name="expressionMethod">合并方法</param>
        /// <returns><see cref="Expression{Func{T, bool}}"/></returns>
        private static Expression <Func <T, bool> > Combine <T>(Expression <Func <T, bool> > expressionFirst, Expression <Func <T, bool> > expressionSecond, Func <Expression, Expression, Expression> expressionMethod)
        {
            ExpressionReplace ex = GenExpressionReplace <T>(out var expressionPara);

            var left  = ex.Replace(expressionFirst.Body);
            var right = ex.Replace(expressionSecond.Body);

            return(Expression.Lambda <Func <T, bool> >(expressionMethod(left, right), expressionPara));
        }