gpt4 book ai didi

linq - 如何在 LINQ 中使用 Math.X 函数?

转载 作者:行者123 更新时间:2023-12-05 01:38:05 26 4
gpt4 key购买 nike

我有一个简单的表(SQL server 和 EF6)Myvalues,包含 IdValue 列( double )

我正在尝试获取此表中所有值的自然对数之和。我的 LINQ 语句是:

            var sum = db.Myvalues.Select(x => Math.Log(x.Value)).Sum();

它编译得很好,但我得到了一个 RTE:

LINQ to Entities 无法识别方法 'Double Log(Double)' 方法,并且该方法无法转换为存储表达式。

我做错了什么/我该如何解决这个问题?

FWIW,我可以直接对数据库执行以下 SQL 查询,得到正确答案:

select exp(sum(LogCol)) from
(select log(Myvalues.Value) as LogCol From Myvalues
) results

最佳答案

LINQ 尝试将 Math.Log 转换为 SQL 命令,以便针对 DB 执行。

不支持。

  • 第一个解决方案(对于 SQL Server)是使用现有的 SqlFunctions 之一。 .更具体地说,SqlFunctions.Log .

  • 另一个解决方案是使用 .ToList() 从数据库中检索所有项目,然后使用 LINQ to Objects(不是 LINQ)执行 Math.Log实体)。

关于linq - 如何在 LINQ 中使用 Math.X 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097671/

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