3

我有一个包含客户经度和纬度的数据库,我有一个搜索表单,用户将在其中输入日志/纬度,距离下拉列表包含 50 英里、100 英里……当用户单击搜索时,我想写一个 linq 查询从数据库中获取位于此距离半径内的所有客户。如何使用 C# 和 linq 做到这一点?

更新:
我发现了这个https://stackoverflow.com/a/1654365/20126但这给出了一个正方形而不是半径

4

2 回答 2

10

对我对类似问题的回答稍作修改:

// radius is the distance in meters
var center = new GeoCoordinate(latitude, longitude);
var result = customers.Select(x => new GeoCoordinate(x.Latitude, x.Longitude))
                      .Where(x => x.GetDistanceTo(center) < radius);

您需要添加对System.Device.dll.

于 2013-10-21T03:23:39.330 回答
0

使用半正弦公式

用户将拥有当前位置、客户位置和距离,因此使用 hasrsine 公式使用当前位置和客户位置计算距离 (d1) 然后将计算出的距离 (d1) 与所需距离进行比较。

逻辑计算距离 <= 所需距离,则表示当前客户在所需距离内,否则客户在径向距离之外

于 2013-10-20T15:07:28.930 回答