我有一个包含邮政编码及其经纬度的数据库表。我正在尝试查找一些代码,用于查询给定的邮政编码和半径x英里内的所有邮政编码(精度不是非常重要,只要接近即可)。
这个查询可以使用Linq to SQL来完成吗?这样就不必使用存储过程了。
我有一个包含邮政编码及其经纬度的数据库表。我正在尝试查找一些代码,用于查询给定的邮政编码和半径x英里内的所有邮政编码(精度不是非常重要,只要接近即可)。
这个查询可以使用Linq to SQL来完成吗?这样就不必使用存储过程了。
Public Function SearchStudents(ByVal SearchZip As String, ByVal Miles As Double) As IEnumerable(Of Student)
Dim dc As New IMDataContext()
Dim lat As Double
Dim lng As Double
Dim maxlat As Double
Dim minlat As Double
Dim maxlng As Double
Dim minlng As Double
Dim zip As ZipCode = (From z In dc.ZipCodes Where z.ZipCode = SearchZip).SingleOrDefault()
lat = zip.Latitude
lng = zip.Longitude
maxlat = lat + Miles / 69.17
minlat = lat - (maxlat - lat)
maxlng = lng + Miles / (Math.Cos(minlat * Math.PI / 180) * 69.17)
minlng = lng - (maxlng - lng)
Dim ziplist = From z In dc.ZipCodes Where z.Latitude >= minlat _
And z.Latitude <= maxlat _
And z.Longitude >= minlng _
And z.Longitude <= maxlng Select z.ZipCode
Return From i In dc.Students Where ziplist.Contains(i.Zip)
End Function