Whi*_*uit 3 linq entity-framework
我有一个简单的表(SQL服务器和EF6) Myvalues,列Id和值(双)
我正在尝试获取此表中所有值的自然对数的总和.我的LINQ声明是:
var sum = db.Myvalues.Select(x => Math.Log(x.Value)).Sum();
Run Code Online (Sandbox Code Playgroud)
编译很好,但我得到一个RTE:
LINQ to Entities无法识别方法'Double Log(Double)'方法,并且此方法无法转换为商店表达式.
我做错了什么/我该如何解决这个问题?
FWIW,我可以直接对数据库执行以下SQL查询,这给了我正确的答案:
select exp(sum(LogCol)) from
(select log(Myvalues.Value) as LogCol From Myvalues
) results
Run Code Online (Sandbox Code Playgroud)
LINQ尝试转换Math.Log为SQL命令,以便对DB执行它.
这不受支持.
第一个解决方案(对于SQL Server)是使用现有的一个SqlFunctions.更具体地说,SqlFunctions.Log.
另一种解决方案是检索您的数据库使用的所有项目.ToList(),并执行Math.Log与LINQ到对象(不LINQ到实体).
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |