使用枚举构建LessThanOrEqual表达式

时间:2012-11-14 06:06:37

标签: c#-4.0

我需要在运行时创建依赖于查询的表达式。枚举有隐式运算符< =但是当我构建它的表达式时,我得到了这个运算符不存在的异常

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)));

是否可以创建此表达式?

1 个答案:

答案 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)));