Я играл с деревьями выражений.У меня есть следующий простой метод, который выполняет запрос путем динамического создания дерева выражений.ItemType - это пустое значение типа int в базе данных , а также в классе сущностей EF .По какой-то причине запрос выдает ошибку
Необработанное исключение: System.InvalidOperationException: бинарный оператор Equal не определен для типов 'System.Nullable`1 [System.Int32]' и 'System.Int32 '.
Не думаю, что я прошу EF что-либо преобразовать.У меня есть мой параметр, определенный как int?
, который, как я думал, должен быть.
Обратите внимание, я смотрел на это
Работа с обнуляемыми типами в выраженииДеревья
Но этот парень пытается передать ему значение nullable int, типизированное как object, с которым EF, я думаю, есть проблемы.Я на самом деле объявляю это как правильный тип ab initio .
public void GetResultCollection<T>() {
MyEntities db = new MyEntities();
var result = db.CreateQuery<T>(String.Format("[{0}]", typeof(T).Name + "s"));
int? ItemTypeValue = 1;
var param = Expression.Parameter(typeof(T));
var lambda = Expression.Lambda<Func<T, bool>>(
Expression.Equal(
Expression.Property(param, "ItemType"),
Expression.Constant(ItemTypeValue)),
param);
var list = result.Where(lambda).ToList();
}
EDIT
Я также пытался ItemTypeValue.Value
-та же ошибка