我需要在运行时创建依赖于查询的表达式。枚举有隐式运算符< =但是当我构建它的表达式时,我得到了这个运算符不存在的异常
public enum A
{
A1,
A2,
A3
};
public class AA
{
public A myA { get; set; }
public int myB { get; set; }
};
ParameterExpression pe = Expression.Parameter(typeof(AA), "p");
Expression.LessThanOrEqual(Expression.Property(
pe,
typeof(AA).GetProperty("myA")),
Expression.Constant(A.A1, typeof(A)));
是否可以创建此表达式?
答案 0 :(得分:1)
似乎<=
运算符没有在枚举上定义,而是在枚举类型上定义,它是整数。所以在你的情况下你可以使用
Expression.LessThanOrEqual(Expression.Convert(Expression.Property(
pe,
typeof(AA).GetProperty("myA")), typeof(int)),
Expression.Convert(Expression.Constant(A.A1, typeof(A)), typeof(int)));