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 に答える