3

Lat/Longsを含む郵便番号のデータベーステーブルがあります。郵便番号とxマイルを取得し、その半径内にあるすべての郵便番号を含む結果のセットを返すクエリを表示するコードを見つけようとしています(精度はそれほど重要ではありません-近い限り)。

これはLinqtoSQLクエリで実行できるので、ストアドプロシージャを使用する必要はありませんか?

4

1 に答える 1

1

私はそれを理解しました、そして私が方程式を見つけたらそれは実際にはそれほど難しくありませんでした。

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
于 2009-10-31T13:19:13.640 に答える