/// <summary>
        /// 把查询参数转换成表达式目录树
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        public static Expression <Func <T, bool> > QueryParamToExpression <T>(this QueryParam queryParam)
        {
            ParameterExpression parameterExpression = Expression.Parameter(typeof(T), "a");
            Expression          member = EntityHelper <T> .GetMemberExpression(parameterExpression, queryParam.Field);

            if (member == null)
            {
                return(null);
            }
            //获取当前属性的类型
            Type   memberType    = member.Type;
            object constantValue = null;
            //当前传入值的类型(实际查询的类型)
            Type valueType = memberType.IsNullableType() ? memberType.GetGenericArguments().First() : memberType;

            //int类型转double查询
            if (valueType == typeof(int))
            {
                valueType = typeof(double);
            }
            //把查询的值转换为对应的值
            constantValue = DataUtils.ChangeType(queryParam.Value, valueType);
            Expression constant = Expression.Constant(constantValue, valueType);

            //把参数类型转换一下
            constant = Expression.Convert(constant, memberType);
            Expression <Func <T, bool> > where = null;
            switch (queryParam.Logic)
            {
            //等于
            case Common.Core.LogicEnum.Equal:
                return(Expression.Lambda <Func <T, bool> >(Expression.Equal(member, constant), parameterExpression));

            //包含 右包含 左包含
            case Common.Core.LogicEnum.Like:
            case Common.Core.LogicEnum.NoLike:
            case Common.Core.LogicEnum.LikeLeft:     //右包含
            case Common.Core.LogicEnum.LikeRight:    //左包含
            {
                var        method = queryParam.Logic.ToMethod();
                Expression mehtodCallExpression = Expression.Call(member, method, constant);
                //  mehtodCallExpression.Not()
                where = Expression.Lambda <Func <T, bool> >(mehtodCallExpression, parameterExpression);
                if (queryParam.Logic == Common.Core.LogicEnum.NoLike)
                {
                    where = where.Not();
                }
                return(where);
            }

            //大于
            case Common.Core.LogicEnum.GreaterThan:
                return(Expression.Lambda <Func <T, bool> >(Expression.GreaterThan(member, constant), parameterExpression));

            //大于等于
            case Common.Core.LogicEnum.GreaterThanOrEqual:
                return(Expression.Lambda <Func <T, bool> >(Expression.GreaterThanOrEqual(member, constant), parameterExpression));

            //少于
            case Common.Core.LogicEnum.LessThan:
                return(Expression.Lambda <Func <T, bool> >(Expression.LessThan(member, constant), parameterExpression));

            //少于等于
            case Common.Core.LogicEnum.LessThanOrEqual:
                return(Expression.Lambda <Func <T, bool> >(Expression.LessThanOrEqual(member, constant), parameterExpression));

            //
            case Common.Core.LogicEnum.In:
                break;

            case Common.Core.LogicEnum.NotIn:
                break;

            //不等于
            case Common.Core.LogicEnum.NoEqual:
                return(Expression.Lambda <Func <T, bool> >(Expression.NotEqual(member, constant), parameterExpression));

            case Common.Core.LogicEnum.IsNullOrEmpty:
                break;

            case Common.Core.LogicEnum.IsNot:
                break;
            }
            return(null);
        }