繁体   English   中英

实体框架距离查询

[英]Entity Framework distance query

我们在SQL Server中有一个包含LatitudeLongitude列的表。 我们想使用查询从特定点查询最近的位置:

SELECT TOP (1) 
    [ID], [Lat], [Lng],
    geography::Point(32, 34, 4326).STDistance(geography::Point([Lat], [Lng], 4326)) as Dist
FROM 
    [Area]
ORDER BY 
    Dist

有没有办法使用EF,让SQL Server进行距离计算?

谢谢

我提出的最简单的解决方案是使用原始查询和EF Core(我假设您正在使用它)将完成剩下的工作。

var blogs = context.Blogs
.FromSql("SELECT * FROM dbo.Blogs")
.ToList();

有关原始查询的更多信息,请访问https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

同样如您对问题的评论中所提到的,您需要在查询中添加WHERE以使其运行更快。 像这样的东西

WHERE [Latitude] < TopLatBound 
    AND [Latitude] > BottomLatBound 
    AND [Longitude] > LeftLngBound 
    AND [Longitude] < RightLngBound

您可以通过将所需的最大距离转换为纬度和长度来计算界限,如此处所述https://gis.stackexchange.com/questions/142326/calculating-longitude-length-in-miles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM