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

是否可以创建此表达式?

4

1 回答 1

1

似乎<=运算符不是在枚举上定义的,而是在枚举类型上定义的,它是整数。所以在你的情况下你可以使用

Expression.LessThanOrEqual(Expression.Convert(Expression.Property(
    pe,
    typeof(AA).GetProperty("myA")), typeof(int)),
    Expression.Convert(Expression.Constant(A.A1, typeof(A)), typeof(int)));
于 2012-11-14T06:29:06.517 回答