Mit LINQ to SQL Postleitzahlen innerhalb Radius Abstand zu finden
-
22-07-2019 - |
Frage
Ich habe eine Datenbanktabelle von zipcodes mit ihrem Lat / Longs. Ich versuche, einige Code zu finden, die eine Abfrage zeigt, dass eine Postleitzahl und x Meilen nimmt und dann Ergebnisse zurück gesetzt, die alle zipcodes enthalten, die in diesem Umkreis sind (Genauigkeit ist nicht sehr wichtig - solange es in der Nähe ist).
Kann dies mit einer Linq to SQL-Abfrage durchgeführt werden, damit ich nicht eine gespeicherte Prozedur verwenden muß?
Lösung
ich es herausgefunden und es war eigentlich gar nicht so schwer, wenn ich die Gleichung gefunden.
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow