Как разделить свойство с помощью выражения linq - PullRequest
3 голосов
/ 21 марта 2012

представьте, что у меня есть сущность:

MyEntity
{
...
Nullable<Int64> MyProperty
...
}

Я бы хотел сделать что-то вроде этого:

Ctx.MyEntity.Where(x=>x.MyProperty/16 == 10) 

с Linq.Expression

Итак, я создаю параметр:

var param = Expression.parameter(typeOf(MyEntity));

Тогда свойство:

var prop = Expression.PropertyOrField(param,"MyProperty");

Если бы я хотел сравнить с 10, я бы сделал что-то вроде этого:

var cmp = Expression.equal(prop,Expression.constant(10,prop.Type));

Но сначала мне нужно разделить опору на 16.

Итак, я стараюсь:

var div = Expression.Divide(prop,Expression.constant(16, prop.type);

И это выдает исключение несоответствующего типа.

Может кто-нибудь помочь?

Thx

1 Ответ

3 голосов
/ 21 марта 2012

Вам необходимо создать выражение деления следующим образом:

Expression.Divide(prop, Expression.Constant((Nullable<Int64>)16, prop.Type))

Необходимо явно преобразовать 16 в тип свойства, поскольку при использовании в качестве литерала оно имеет тип Int32, чтоочевидно, не то же самое, что Nullable<Int64>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...