【发布时间】:2019-09-16 17:36:57
【问题描述】:
相关:Create a Lambda Expression With 3 conditions
与上面的主题完全相似,我写了这个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)
)
)
);
唯一不同的是在我的新表中Status 是tinyint null 或C# 中的(byte?)。当我运行代码时出现此错误:
二元运算符 Equal 没有为类型 'System.Nullable`1[System.Byte]' 和 'System.Byte' 定义
所以我将Expression.Constant(50) 更改为Expression.Constant((byte?)50) 并再次遇到相同的错误。我的错在哪里?
谢谢
更新 1)
我试过这个:Expression.Constant(50, typeof(byte?)); 但我得到了这个错误:
参数类型不匹配
【问题讨论】:
-
你试过了吗:
Expression.Constant(50, typeof(byte?));? -
是的,我收到了这个错误:
Argument types do not match -
哪个调用会引发异常?
-
@PetSerAl,所有这些电话!
-
@Arian 这是不可能的。由于这里没有任何异常处理程序,一旦第一个方法调用抛出异常,其他方法调用将不会完成。因此,只有一个方法调用会引发异常。哪一个?
标签: c# lambda expression-trees c#-7.0