【发布时间】:2014-01-07 20:20:43
【问题描述】:
我在 SQL2008 中有一个 Clinics 表,其中包含可以为空的十进制纬度和经度列(可以为空,因为我没有所有诊所的坐标)。
我正在使用 Linq-to-EF,并希望根据与给定点的距离来计算/排序记录。
为简单起见,假设距离计算可以是:
√¯( (ClinicLat - PointLat) ^ 2 + (ClinicLng - PointLng) ^ 2 )
(第一个符号是平方根)
我最接近的是:
Math.Sqrt(
Math.Pow((double)((c.Latitude ?? 0) - latNotNull), 2.0)
+ Math.Pow((double)((c.Longitude ?? 0) - lngNotNull), 2.0)
)
但这给出了错误:
LINQ to Entities does not recognize the method 'Double Sqrt(Double)' method
我考虑过使用 UDF,但 EF Code First 不允许。我不想使用存储过程,因为我想在 C# 中编写查询和管理它。我有什么选择吗?
【问题讨论】:
-
我很困惑。是 linq 到 SQL 还是 EF?
-
@MarcinJuraszek 这是 EF,他说他正在使用 Code First。
-
将问题更新为 Linq-to-Entities。对不起,这个 Linq 的东西有点新。出于兴趣,它会有什么不同?
标签: .net sql-server linq entity-framework linq-to-entities