实体框架距离查询

时间:2017-05-23 07:41:35

标签: c# sql-server entity-framework

我们在SQL Server中有一个包含var planets:[Planet]? Latitude列的表。 我们想使用查询从特定点查询最近的位置:

Longitude

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

由于

1 个答案:

答案 0 :(得分:1)

我提出的最简单的解决方案就是使用原始查询,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

所述