While LINQ simplifies your DAL in myriad ways, this seemingly simple query made me stop and think about how to properly explain this to the query engine
Disclaimer: This is using a bounding box hack rather than an accurate radius forumula, use at your own risk as there is some loss of precision.
/// Find all courts within a specified radius (in miles) to a point (latitude & longitude) /// <param name="latitude">degrees(decimal)</param> /// <param name="longitude">degrees(decimal)</param> /// <param name="radius">miles</param> /// <returns></returns> public IQueryable<Court> FindNearbyCourts(decimal latitude, decimal longitude, decimal radius);
decimal radiusLatitude = radius / 69.04; decimal radiusLongitude = radius / 59.96;
IQueryable<Court> nearbyCourts = from court in _db.Courts where (Math.Abs(court.latitude - latitude) < radiusLatitude) where (Math.Abs(court.longitude - longitude) < radiusLongitude) select court;
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.