c# 动态构造实体属性的lambda Expression表达式

2021-03-04 18:27

阅读:655

标签:lam   bsp   length   exp   rop   public   int   fun   为什么   

 

获取实体T的所有属性的lambda表达式数组:

如x->x.a,x->x.b,x->x.b,x->x.c

public static Expressionobject>>[] GetExpressions()
        {
            var properties = typeof(T).GetProperties();
            Expressionobject>>[] expressions = new Expressionobject>>[properties.Length];
            var p = Expression.Parameter(typeof(T), "x");
            for (int i = 0; i )
            {
                Expression exProperty = Expression.Property(p, properties[i]);
                var body = Expression.Convert(exProperty, typeof(object));

                expressions[i] = Expression.Lambdaobject>>(body, p);
            }
            return expressions;
        }

 为什么要加var body = Expression.Convert(exProperty, typeof(object));

因为如果我们的属性的类型为decimal?等可空类型时,不加convert会报错。

c# 动态构造实体属性的lambda Expression表达式

标签:lam   bsp   length   exp   rop   public   int   fun   为什么   

原文地址:https://www.cnblogs.com/hankuikui/p/12918247.html


评论


亲,登录后才可以留言!