C# 按特定半径内的邮政编码和过滤列表进行搜索?

C# 按特定半径内的邮政编码和过滤列表进行搜索?,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,我正试图找出一种方法来接受以下用户输入: 邮政编码 距离(例如:1,5,10)[英里] 并查询包含以下内容的列表: 地点名称 邮政编码 纬度 经度 过滤列表应仅返回输入邮政编码(x)英里半径内的位置,并计算每个位置的距离(例如:1.2英里、0.5英里等)。有什么建议吗 提前谢谢 从理论角度来看,您可以这样做,并且有许多公式可以进行距离计算(这里的一些参考资料:) 但是请注意,随着列表的增加,这将变得越来越昂贵,因为您必须对列表中的每个元素使用这样的公式 通常,为了高效地执行此类操作(以及

我正试图找出一种方法来接受以下用户输入:

  • 邮政编码
  • 距离(例如:1,5,10)[英里]
并查询包含以下内容的列表:

  • 地点名称
  • 邮政编码
  • 纬度
  • 经度
过滤列表应仅返回输入邮政编码(x)英里半径内的位置,并计算每个位置的距离(例如:1.2英里、0.5英里等)。有什么建议吗


提前谢谢

从理论角度来看,您可以这样做,并且有许多公式可以进行距离计算(这里的一些参考资料:)

但是请注意,随着列表的增加,这将变得越来越昂贵,因为您必须对列表中的每个元素使用这样的公式

通常,为了高效地执行此类操作(以及其他许多操作),它使用了一个GIS系统(一些是开源的或免费的,如果我没有错的话,比如带有插件的PostgreSQL),该系统专门用于该领域。

我们在客户端将ZipCode转换为纬度和经度。在AJAX请求中,我们发布lat、long和distance到服务器的代码。服务器使用lat/long和radius计算偏移量,计算纬度和经度的from和to,然后搜索匹配的记录

if (!ValidaZipCode(zipCode)) {
    $("#searchZiperror").show();
    $(".driverZipcode").removeClass("wouterror");
    $(".driverZipcode").addClass("driverZipcodeError");
    return false;
}
else {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': zipCode }, function (results, status) {
 if (status == google.maps.GeocoderStatus.OK) {
     var currentlatlng = results[0].geometry.location;
     if (currentlatlng) {
         var lat = currentlatlng.lat();
         var lng = currentlatlng.lng();

         var model = {
             address: zipCode,
             latitude: lat,
             longitude: lng,
             radius: radiusValue
         };

         $.ajax({
                 url: '@Url.Action("UpdateRadius", "MyController")',
                 contentType: 'application/json; charset=utf-8',
                 type: 'POST',
                 dataType: 'html',
                 data: JSON.stringify(model)
             })
             .success(function (result) {
                 // Use the result for appropriate action
             })
             .error(function (xhr, status) {
                 // Use the status for appropriate action
             });
     }
 }

您是否已经拥有数据,或者您是否询问我们是否知道您可以使用的API?您可以使用LINQ获取您需要的数据want@christiandev我有每个位置的邮政编码、纬度和经度数据(列表是从数据库中提取的)。@Coder1409有什么例子吗?考虑到一些美国邮政编码覆盖的大面积区域(99557超过13000平方英里),1.2英里的距离到底意味着什么?很抱歉回复得太晚了。谢谢你的帖子!虽然有很多方法可以做到这一点,但你的回答让我走上了一条好的道路,并给了我更多的想法。最后,我将邮政编码值传递给谷歌地理编码API,以获得相应的纬度和经度值。然后,我使用下面的函数()根据搅拌列表进行计算,以确定距离。