public GetExpressionRightField ( |
||
exp | ||
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;
}
/// <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)); }