次の列挙型があるとしましょう。
[Flags] public enum Color { Red = 1, Blue = 2, Green = 4 }
ここで、次のクエリを使用して赤いシャツを検索します。
Shirts.Where(x => (x.Color & Color.Red) != 0)
そしてそれはうまく機能しますが、これを動的に構築しようとすると:
var color= Expression.Constant(Color.Red);
var property = Expression.Property(Expression.Parameter(typeof(Shirt)), "Color");
Expression.NotEqual(Expression.And(property, color), Expression.Constant(0));
次の例外が発生します。
二項演算子Andは、タイプ'MyEnums.Color'および'MyEnums.Color'に対して定義されていません。
.NET4.5を使用しています
何かご意見は?