Entity framework 按距离对位置进行分组

Entity framework group locations by proximity

给定一个 table,其中包含具有空间数据的行(具有坐标的 DbGeography 列)和容差级别(例如 1000 英里),是否可以从 table 使用 EF,以便根据邻近度对行进行分组?换句话说,如果某些行上的坐标字段的值接近于给定的容差级别,则将它们分组?我四处寻找可用的 Spatial 函数,但没有找到对此有帮助的函数。谢谢

像这样的东西应该给你两组键入一个布尔值,指示点是否更接近另一个 1000 英里。

var threshold = 1609344.0;

var groups = from p1 in dbContext.Points
    let isCloseToOtherPoint = dbContext.Points.Any(p2 => p1.Geography.Distance(p2.Geography) < threshold)
    group p1 by isCloseToOtherPoint into g
    select g