簡體   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