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

Amr*_*rhy 3 c# linq entity-framework geolocation

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

更新:
我发现这个/sf/answers/115805581/,但这给出了一个方形而不是半径

Fun*_*ung 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);
Run Code Online (Sandbox Code Playgroud)

你需要添加引用System.Device.dll.

  • 据我所知,GeoCoordinate.GetDistanceTo()无法通过L2E/EntityFramework转换为SQL (2认同)