根据输入的模型属性表达式获取名称
Posted 4℃空间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据输入的模型属性表达式获取名称相关的知识,希望对你有一定的参考价值。
public T GetEntity<T>(string tableName, Dictionary<Expression<Func<T,object>>,object> conditionDic) where T : new() { var dic = new Dictionary<string, object>(); foreach (var kp in conditionDic) { var columnName = ""; if (kp.Key.Body is UnaryExpression) { columnName = ((MemberExpression)((UnaryExpression)kp.Key.Body).Operand).Member.Name; } else if (kp.Key.Body is MemberExpression) { columnName = ((MemberExpression)kp.Key.Body).Member.Name; } else if (kp.Key.Body is ParameterExpression) { columnName = ((ParameterExpression)kp.Key.Body).Type.Name; } if (string.IsNullOrEmpty(columnName)) continue; dic.Add(columnName, key.Value); } //return GetEntity<T>(tableName, dic); }
使用方式:
var dic = new Dictionary<Expression<Func<Entity,object>>, object> { {p => p.Member1, "test1"}, {p => p.Member2, 2} }; var tmp = GetEntity("TableName", dic);
以上是关于根据输入的模型属性表达式获取名称的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spatie/Activitylog 根据 id 获取模型属性名称?