Я играл с деревьями выражений. У меня есть следующий простой метод, который выполняет запрос путем динамического создания дерева выражений. ItemType - это нулевая int в базе данных, а также в классе сущности EF. По какой-то причине, хотя запрос выдает ошибку
Необработанное исключение: System.InvalidOperationException: двоичный оператор Equal не определен для типов 'System.Nullable`1 [System.Int32]' и 'System.Int32'.
Я не думаю, что я прошу EF конвертировать что-либо. У меня есть параметр, указанный как int?
, который, как я думал, должен быть.
Заметьте, я посмотрел на это
Работа с типами NULL в деревьях выражений
Но этот парень пытается передать его значение nullable int, введенное как объект, с которым, по моему мнению, возникают проблемы. Я на самом деле объявляю это правильным типом 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();
}
ИЗМЕНИТЬ
Я также пробовал ItemTypeValue.Value
- ту же ошибку