在LINQ中将String转换为Float

时间:2018-05-16 20:45:10

标签: c# linq

我有以下LINQ查询。请注意,DataValuestring值。我试图将它转换为浮点数,然后得到平均值。

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.' 

这个问题有好的工作吗?

2 个答案:

答案 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();