Создать, где предложение динамически для байта?поле - PullRequest
1 голос
/ 27 апреля 2019

Относится к: Создание лямбда-выражения с 3 условиями

Точно так же, как в вышеупомянутой теме я написал это 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#. Когда я запускаю код, я получаю эту ошибку:

Бинарный оператор Equal не определен для типов 'System.Nullable`1 [System.Byte]' и 'System.Byte'

поэтому я меняю Expression.Constant(50) на Expression.Constant((byte?)50) и снова получаю ту же ошибку. Где моя ошибка?

Спасибо


Обновление 1)

Я пробовал это: Expression.Constant(50, typeof(byte?)); но я получил эту ошибку:

Типы аргументов не совпадают

1 Ответ

1 голос
/ 27 апреля 2019

Почти как Эван сказал:

Expression.Constant((byte?)50, typeof(byte?))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...