SqlSugar.ResolveExpress.GetExpressionRightField C# (CSharp) Method

GetExpressionRightField() public method

获取拉姆达表达式的字段值
public GetExpressionRightField ( Expression exp, SqlSugarClient db ) : string
exp System.Linq.Expressions.Expression
db SqlSugarClient 数据库访问对象
return string
        public string GetExpressionRightField(Expression exp, SqlSugarClient db)
        {
            DB = db;
            string reval = "";
            LambdaExpression lambda = exp as LambdaExpression;
            var isConvet = lambda.Body.NodeType.IsIn(ExpressionType.Convert);
            var isMember = lambda.Body.NodeType.IsIn(ExpressionType.MemberAccess);
            if (!isConvet && !isMember)
            {
                throw new SqlSugarException(FileldErrorMessage);
            }
            try
            {
                if (isConvet)
                {
                    var memberExpr =((UnaryExpression)lambda.Body).Operand as MemberExpression;
                    reval= memberExpr.Member.Name;
                }
                else//isMember
                {
                    reval= (lambda.Body as MemberExpression).Member.Name;
                }
            }
            catch (Exception)
            {
                throw new SqlSugarException(FileldErrorMessage);
            }
            if (DB != null && DB.IsEnableAttributeMapping && DB._mappingColumns.IsValuable())
            {
                if (DB._mappingColumns.Any(it => it.Key == reval))
                {
                    var dbName = DB._mappingColumns.Single(it => it.Key == reval).Value;
                    return dbName;
                }
            }
            return reval;
        }

Usage Example

        /// <summary>
        /// 获取最小值
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <typeparam name="T"></typeparam>
        /// <param name="queryable"></param>
        /// <param name="minField">列</param>
        /// <returns></returns>
        public static object Min <T>(this Queryable <T> queryable, Expression <Func <T, object> > expression)
        {
            ResolveExpress re       = new ResolveExpress();
            var            minField = re.GetExpressionRightField(expression);

            return(Min <T, object>(queryable, minField));
        }
All Usage Examples Of SqlSugar.ResolveExpress::GetExpressionRightField