为字节动态创建Where子句?领域

问题描述 投票:1回答:1

相关: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(byte?)C#。当我运行代码时出现此错误:

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

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

谢谢


更新1)

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

参数类型不匹配

c# lambda expression-trees c#-7.0
1个回答
1
投票

几乎像埃文说的那样:

Expression.Constant((byte?)50, typeof(byte?))
© www.soinside.com 2019 - 2024. All rights reserved.