C# 在LINQ中将字符串转换为浮点
我有以下LINQ查询。请注意,C# 在LINQ中将字符串转换为浮点,c#,linq,C#,Linq,我有以下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 'Sin
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.'
对于这个问题有好的解决方法吗?不是每个C#函数都是映射到SQL的函数。根据您使用的ORM(我假设EntityFFramew),您可以在ORM文档中找到映射函数的列表
映射函数基本上是指ORM映射/转换为SQL函数并将其添加到ORM执行的最终结果SQL语句中的C#函数
阅读文档以确保安全
如果您仍然想使用Float.Parse
,那么您唯一的选择就是先具体化查询,然后解析,然后平均。但不建议这样做。不是每个C#函数都是映射到SQL的函数。根据您使用的ORM(我假设EntityFFramew),您可以在ORM文档中找到映射函数的列表
映射函数基本上是指ORM映射/转换为SQL函数并将其添加到ORM执行的最终结果SQL语句中的C#函数
阅读文档以确保安全
如果您仍然想使用
Float.Parse
,那么您唯一的选择就是先具体化查询,然后解析,然后平均。但不建议这样做。您应该能够使用Convert.ToSingle
而不是float.Parse
:
var Avg = DataContext.FormData
.Select(fd => DataContext.FormData(fd.DataValue))
.Average();
您应该能够使用
Convert.ToSingle
而不是float.Parse
:
var Avg = DataContext.FormData
.Select(fd => DataContext.FormData(fd.DataValue))
.Average();
选择数据到内存,然后在
IEnumerable
中转换值,或者编写自定义SQL查询来进行转换和平均。选择数据到内存,然后在IEnumerable
中转换值,或者编写自定义SQL查询来进行转换和平均。convert.ToFloat
不是有效函数。它是Convert.ToSingle
,此函数未映射到。感谢您提供的信息,我不确定写答案时它是什么。但是建议要求自己检查文档的人。Convert.ToFloat
不是有效的函数。它是Convert.ToSingle
,此函数未映射到。感谢您提供的信息,我不确定写答案时它是什么。但建议要求自己检查文档的人。