首页 > 解决方案 > 为字节动态创建 Where 子句?场地

问题描述

相关:创建具有 3 个条件的 Lambda 表达式

与上面的主题完全相似,我写了这个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)
        )
    )
);

唯一不同的是在我的新表中Statustinyint null(byte?)C#. 当我运行代码时,我得到了这个错误:

没有为类型“System.Nullable`1[System.Byte]”和“System.Byte”定义二元运算符 Equal

所以我改变Expression.Constant(50)Expression.Constant((byte?)50)再次得到同样的错误。我的错误在哪里?

谢谢


更新 1)

我试过这个:Expression.Constant(50, typeof(byte?));但我得到了这个错误:

参数类型不匹配

标签: c#lambdaexpression-treesc#-7.0

解决方案


几乎就像埃文所说:

Expression.Constant((byte?)50, typeof(byte?))

推荐阅读