为字节动态创建 Where 子句?场地
Create Where Clause Dynamically For Byte? Field
相关于:
与我写的上面的主题完全相似Expression
:
var body = Expression.AndAlso(
Expression.Equal(
Expression.PropertyOrField(param, "Year"),
Expression.Constant(year)
),
Expression.AndAlso(
Expression.Equal(
Expression.PropertyOrField(param, "CityCode"),
Expression.Constant(cityCode)
),
Expression.Equal(
Expression.PropertyOrField(param, "Status"),
Expression.Constant(50)
)
)
);
唯一不同的是在我的新 table Status
中是 tinyint null
或 (byte?)
在 C#
中。当我 运行 代码时,我得到了这个错误:
The binary operator Equal is not defined for the types 'System.Nullable`1[System.Byte]' and 'System.Byte'
所以我将 Expression.Constant(50)
更改为 Expression.Constant((byte?)50)
并再次遇到相同的错误。我的错误在哪里?
谢谢
更新 1)
我试过这个:Expression.Constant(50, typeof(byte?));
但我得到这个错误:
Argument types do not match
几乎正如埃文所说:
Expression.Constant((byte?)50, typeof(byte?))
相关于:
与我写的上面的主题完全相似Expression
:
var body = Expression.AndAlso(
Expression.Equal(
Expression.PropertyOrField(param, "Year"),
Expression.Constant(year)
),
Expression.AndAlso(
Expression.Equal(
Expression.PropertyOrField(param, "CityCode"),
Expression.Constant(cityCode)
),
Expression.Equal(
Expression.PropertyOrField(param, "Status"),
Expression.Constant(50)
)
)
);
唯一不同的是在我的新 table Status
中是 tinyint null
或 (byte?)
在 C#
中。当我 运行 代码时,我得到了这个错误:
The binary operator Equal is not defined for the types 'System.Nullable`1[System.Byte]' and 'System.Byte'
所以我将 Expression.Constant(50)
更改为 Expression.Constant((byte?)50)
并再次遇到相同的错误。我的错误在哪里?
谢谢
更新 1)
我试过这个:Expression.Constant(50, typeof(byte?));
但我得到这个错误:
Argument types do not match
几乎正如埃文所说:
Expression.Constant((byte?)50, typeof(byte?))