使用经度和纬度查找给定距离内的所有附近客户

时间:2013-10-20 14:58:36

标签: c# linq entity-framework geolocation

我有一个包含客户经度和纬度的数据库,我有一个搜索表单,其中用户将输入log / lat和距离下拉列表包含50英里,100英里,....当用户点击搜索时我想写一个linq查询从db获取此距离半径内的所有客户。如何使用C#和linq进行此操作?

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

2 个答案:

答案 0 :(得分:10)

对我对类似question的答案进行了一点修改:

// 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的引用。

答案 1 :(得分:0)

使用半胱氨酸配方

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

逻辑是计算距离&lt; =所需距离然后它表示当前客户处于所需距离,否则客户超出径向距离