How do you divide property with linq expression

Imagine I got an entity:

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

      

I would like to do something like this:

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

      

with Linq.Expression

So, I create a parameter:

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

      

Then the property:

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

      

If I wanted to compare with 10, I would do something like this:

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

      

But first I need to divide the prop by 16.

So I am trying:

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

      

And that excludes the exclusive type.

Can anyone please help?

thank,

+3


source to share


1 answer


You need to create a split expression like this:

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

      



You must explicitly convert 16 to the type of the property, because when used as a literal, it has a type Int32

that is obviously not the same as Nullable<Int64>

.

+2


source







All Articles