关于Expression.Equal方法的使用

来源:互联网 发布:数据透视图去掉汇总行 编辑:程序博客网 时间:2024/05/18 06:03

项目中用到的泛型表达式,这个是通用的方法,具体在使用Expression.Equal时left与right的表达式比较失败

原因:两个表达式用到的类类型/数据类型不一致

解决办法:只要把其中一个表达式用到的类型转换成待比较表达式用到的类型即可

Expression提到了四种类型转换的方法

1.

//创建一个 System.Linq.Expressions.ConstantExpression.Value 和 System.Linq.Expressions.Expression.Type
//     属性设置为指定值的 System.Linq.Expressions.ConstantExpression。

public static ConstantExpression Constant(object value, Type type);

2.

//创建一个 System.Linq.Expressions.UnaryExpression,它表示实现方法已指定的转换运算。

public static UnaryExpression Convert(Expression expression, Type type);

3.

//创建一个 System.Linq.Expressions.UnaryExpression,它表示在目标类型发生溢出时引发异常的转换运算。

public static UnaryExpression Convert(Expression expression, Type type, MethodInfo method);

4.

//创建一个 System.Linq.Expressions.ConstantExpression.Value 属性设置为指定值的 System.Linq.Expressions.ConstantExpression。

public static ConstantExpression Constant(object value);//不推荐使用


我个人用到了public static ConstantExpression Constant(object value, Type type);解决了指定属性值的表达式类型不一致的问题

原创粉丝点击