Используя Linq to Sql, чтобы найти почтовые индексы на расстоянии радиуса
-
22-07-2019 - |
Вопрос
У меня есть база данных почтовых индексов с их широтой / долготой. Я пытаюсь найти код, который показывает запрос, который принимает почтовый индекс и х миль, а затем возвращает набор результатов, который включает все почтовые индексы, которые находятся в пределах этого радиуса (точность не очень важна - пока она близка). р>
Можно ли это сделать с помощью запроса 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
Не связан с StackOverflow