C# 如何在动态linq内核中实现math.power

C# 如何在动态linq内核中实现math.power,c#,sql,entity-framework,dynamic-linq-core,C#,Sql,Entity Framework,Dynamic Linq Core,我正在做一个选择来计算现值,如下所示: .Select("new (Key.t, Sum(cashflow) as profit, sum(cashflow)/power(1+0.04, Key.t) as pv"); 我在运行时出错: “ExceptionMessage”:“不存在适用的聚合方法‘Power(Double,Int32)’” 我也尝试过这样的C#语法 .Select("new (Key.t, Sum(cashflow) as profit, sum

我正在做一个选择来计算现值,如下所示:

.Select("new (Key.t, Sum(cashflow) as profit, sum(cashflow)/power(1+0.04, Key.t) as pv");
我在运行时出错:

“ExceptionMessage”:“不存在适用的聚合方法‘Power(Double,Int32)’”

我也尝试过这样的C#语法

.Select("new (Key.t, Sum(cashflow) as profit, sum(cashflow)/Math.Pow(1+0.04, Key.t) as pv");
看起来语法可能有用?但仍然是这样一个错误:

.Select("new (Key.t, Sum(cashflow) as profit, sum(cashflow)/power(1+0.04, Key.t) as pv");
“ExceptionMessage”:“运算符“/”与操作数类型“Decimal”和“Double”不兼容”

我在这之前的问题很长,所以我不会让你厌烦。但作为一项测试,我确信这是可行的:

.Select("new (Key.t, Sum(cashflow) as profit, sum(cashflow)/Key.t as pv");
所以我称之为“力量”的方式有问题

如何在动态linq内核中实现数学能力

编辑: 感谢@Fildor在我尝试的评论中

.Select("new (Key.t, Sum(cashflow) as profit, Convert.ToDecimal(sum(cashflow)/Math.Pow(1+0.04, Key.t)) as pv");
但是我有

LINQ to Entities无法识别方法'System.Decimal ToDecimal(Double)'方法,此方法无法转换为存储表达式


好的,错误消息实际上告诉您什么是错误的:除法运算符没有为可为空的十进制数和双精度数定义。因此,您可以简单地尝试将
Math.Pow
的结果强制转换为
decimal
@Fildor谢谢,可以演示如何执行此操作,我使用Convert.ToDecimal并获得“LINQ to Entities不识别方法'System.decimal ToDecimal(Double)'方法,并且此方法无法转换为存储表达式。”您尝试过
(decimal)(Math.Pow(1.04,Key.t))
?@Fildor刚刚尝试了..奇怪的是,错误是“.”或“(”或字符串文字预期值)。我使用的和你写的完全一样。
Sum(cashflow)/(decimal)(Math.Pow(1.04,Key.t))
1和.04之间有空格吗?不应该有。