Я играл с деревьями выражений. У меня есть следующий простой метод, который выполняет запрос путем динамического создания дерева выражений. 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
- та же ошибка