استخدام LINQ إلى SQL للعثور على رموز البريدي مسافة نصف قطرها

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

  •  22-07-2019
  •  | 
  •  

سؤال

ولدي جدول قاعدة بيانات من zipcodes مع هم اللات / يتوق. أحاول العثور على بعض التعليمات البرمجية التي يظهر استعلام الذي يأخذ الرمز البريدي و x ميل ومن ثم العودة مجموعة من النتائج التي تتضمن كافة zipcodes التي هي ضمن تلك دائرة نصف قطرها (الدقة ليست مهمة جدا - طالما انها قريبة).

ويمكن أن يتم هذا مع 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