1

我有一些使用 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 中完成吗?如果是这样,我怎样才能重建这个查询工作?

4

0 回答 0