我有以下LINQ查询。请注意,DataValue
是string
值。我试图将它转换为浮点数,然后得到平均值。
var Avg = (from fd in DataContext.FormData
select float.Parse(fd.DataValue)).Average();
我收到以下错误:
System.NotSupportedException: 'LINQ to Entities does not recognize
the method 'Single Parse(System.String)' method, and this method
cannot be translated into a store expression.'
这个问题有好的工作吗?
答案 0 :(得分:1)
并非每个C#函数都是SQL的Mapped函数。根据您使用的ORM(我假设实体框架),您可以在orm文档中找到映射函数的列表。
映射函数基本上是指一个C#函数,orm映射/转换为SQL函数,并将其添加到由orm执行的最终结果SQL语句中。
我敢打赌,Convert.ToFloat是一个映射函数,但再次阅读文档是安全的。
如果您仍想使用Float.Parse,那么您唯一的选择是首先实现查询,然后是Parse,然后是Average。但不建议这样做。
答案 1 :(得分:1)
您应该可以使用Convert.ToSingle
代替float.Parse
:
var Avg = DataContext.FormData
.Select(fd => DataContext.FormData(fd.DataValue))
.Average();