根据输入的模型属性表达式获取名称

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 获取模型属性名称?

从核心数据读取时获取属性名称和值

如何生成属性名称,并在 Rails 模型中获取它们的值

获取基于属性名称的 Vue 数据模型属性的值?

如何通过 MVC Razor 代码获取枚举成员的显示名称属性?

如何根据名称获取属性值