LINQ에서 SQL을 사용하여 반경 거리 내에서 우편 번호를 찾습니다.
-
22-07-2019 - |
문제
나는 그들의 위도/롱과 izzcodes의 데이터베이스 테이블이 있습니다. 나는 우편 코드와 x 마일을 가져 오는 쿼리를 보여주는 코드를 찾은 다음 해당 반경 내에있는 모든 우편 코드를 포함하는 결과 세트 세트를 반환하려고합니다 (정밀도는 그다지 중요하지 않습니다 - 가까이있는 한).
저장된 절차를 사용할 필요가 없으므로 LINQ에서 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