小编Iva*_*vić的帖子

如何使用按位运算符和枚举生成动态表达式?

假设我有以下枚举.

[Flags] public enum Color { Red = 1, Blue = 2, Green = 4 }
Run Code Online (Sandbox Code Playgroud)

现在,我想使用以下查询来查找红色衬衫.

Shirts.Where(x => (x.Color & Color.Red) != 0)
Run Code Online (Sandbox Code Playgroud)

它工作正常,但当我尝试动态构造它:

var color= Expression.Constant(Color.Red);
var property = Expression.Property(Expression.Parameter(typeof(Shirt)), "Color");
Expression.NotEqual(Expression.And(property, color), Expression.Constant(0));
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

二元运算符And没有为类型'MyEnums.Color'和'MyEnums.Color'定义.

我正在使用.NET 4.5

有什么想法吗?

c# linq expression bit-manipulation dynamic

6
推荐指数
1
解决办法
1437
查看次数

标签 统计

bit-manipulation ×1

c# ×1

dynamic ×1

expression ×1

linq ×1