Деревья выражений и типы, допускающие значение NULL

Я играл с деревьями выражений. У меня есть следующий простой метод, который выполняет запрос путем динамического создания дерева выражений. ItemType - это int, допускающий значение NULL, в базе данных, , а также в классе сущности EF . По какой-то причине запрос выдает ошибку

Unhandled Exception: System.InvalidOperationException: The бинарный оператор Equal не определен для типов 'System.Nullable`1 [System.Int32]' и 'System.Int32'.

Я не думаю, что прошу EF преобразовать что-либо. У меня есть параметр, определенный как int? , как я и думал, он должен быть.

Обратите внимание, я просмотрел это

Работа с типами, допускающими значение NULL, в деревьях выражений

Но этот парень пытается передать свое обнуляемое значение int, набранное как объект, с которым, как мне кажется, у EF есть проблемы. На самом деле я объявляю это правильным типом ab initio .

   public void GetResultCollection() {
        MyEntities db = new MyEntities();
        var result = db.CreateQuery(String.Format("[{0}]", typeof(T).Name + "s"));

        int? ItemTypeValue = 1;

        var param = Expression.Parameter(typeof(T));

        var lambda = Expression.Lambda>(
            Expression.Equal(
                Expression.Property(param, "ItemType"),
                Expression.Constant(ItemTypeValue)),
            param);

        var list = result.Where(lambda).ToList();
    }

РЕДАКТИРОВАТЬ

Я также пробовал ItemTypeValue.Value - та же ошибка

18
задан Community 23 May 2017 в 11:54
поделиться