gpt4 book ai didi

c# - 你如何用linq表达式划分一个属性

转载 作者:行者123 更新时间:2023-11-30 16:25:32 24 4
gpt4 key购买 nike

假设我有一个实体:

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> 不同.

关于c# - 你如何用linq表达式划分一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com