我像这样在我的数据库中存储坐标
var geometryFactory = NtsGeometryServices.Instance.CreateGeometryFactory(srid: 4326);
var point = geometryFactory.CreatePoint(new NetTopologySuite.Geometries.Coordinate(
command.GeoCoordinate!.Longitude,
command.GeoCoordinate!.Latitude));
然后我需要在数据库中查询某个坐标一定距离内的任何点,所以我传入这样的表达式
x => x.Location.Distance(inputPoint) < distance
然而,返回的距离只是使用正常的毕达哥拉斯计算,给我一个度数而不是米或英里的结果。
我可以使用 hasrsine 公式手动计算以米为单位的距离,但是将其传递给我的表达式会导致 linq 错误:
无法翻译 LINQ 表达式。要么以可翻译的形式重写查询,要么切换到 ..
如何存储/查询这些数据,以便我可以将过滤器传递给 ef core 并取回给定距离内的结果列表?