我有一些使用 sql 字符串和连接的旧方法,我试图将它们转换为 Linq to Entities。
我已将 sql 重写为 ef 查询,如下所示;
Using ctx As New DataEntities()
Dim station As String = (From sta In ctx.weather_stations
Let distance = SqlFunctions.SquareRoot(Math.Pow(69.1 * (sta.latitude - lat), 2) + Math.Pow(69.1 * (longi - sta.longitude) * SqlFunctions.Cos(sta.latitude / 57.3), 2))
Where distance < withinRange
Order By distance
Select sta.station_id).Take(1).ToString()
If Not String.IsNullOrEmpty(station) Then
Return station
Else
Return String.Empty
End If
End UsingData
这给出了一个错误,LINQ to Entities 无法识别方法 'Double Sqrt(Double)' 方法,并且此方法无法转换为存储表达式。
这个查询可以在 Linq to EF 中完成吗?如果是这样,我怎样才能重建这个查询工作?