编程语言
首页 > 编程语言> > 首页> C#>如何分割属性与LINQ表达式

首页> C#>如何分割属性与LINQ表达式

作者:互联网

想象我有一个实体:

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));

但首先我需要将prop除以16.

所以我尝试:

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

并抛出不匹配类型的异常.

有人可以帮忙吗?

谢谢,

解决方法:

您需要创建如下的除法表达式:

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

必须明确地将16转换为属性的类型,因为当用作文字时,它的类型为Int32,这显然与Nullable< Int64>不同.

标签:linq-to-entities,linq,c,lambda
来源: https://codeday.me/bug/20191201/2081866.html