C#中根据传入的字符串字段返回实体Lambda表达式 中根据传入的字符串字段返回实体 Lambda 表达式 C#
我们在操作实体的时候,经常会使用到Lambda表达式,如下所示就是对实体IOT_Sample的CrtTime进行操作:
var ret = NestExtension.GetSort<IOT_Sample>(m => m.CrtTime, true);
但是往往有些时候我们具体的业务只告诉我们该实体的某个字段名称(字符串类型的),这个时候我们就需要根据传过来的字符串字段名称返回该实体对应字段的Lambda表达式,具体代码实现如下:
//创建表达式参数(指定参数或变量的类型)
var param = Expression.Parameter(typeof(T), "t");
//构建表达式体(类型包含指定的属性)
var body = Expression.Property(param, "CrtTime");
//根据参数和表达式体构造一个Lambda表达式
var fieldExp = Expression.Lambda<Func<T, object>>(Expression.Convert(body, typeof(object)), param);
上述代码中的fieldExp结果就是我们想要的!