LINQ에서 SQL을 사용하여 반경 거리 내에서 우편 번호를 찾습니다.

StackOverflow https://stackoverflow.com/questions/1647521

  •  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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top