Мне нужно получить местоположение поблизости, используя (долгота, широта)
У меня есть таблица, где местоположения сохраняются в базе данных с полями долготы и широты,
Я хочу получить ближайшеелокации, и у меня есть Sql-код и я хочу преобразовать его в linq, где я использую ASP.Net MVC5. Вот мой код:
SELECT Name, ( 3959 * acos( cos( radians(24.743055) ) * cos( radians(
latitude ) ) *
cos( radians( longitude ) - radians(46.669702) ) + sin( radians(24.743055)
)*
sin( radians( latitude ) ) ) ) AS distance
FROM Event
ORDER BY distance
Я написал его в linq следующим образом:
double startlat = Convert.ToDouble(db.Users.Where(u => u.Id == 2).Select(u
=> u.latitude).Single());
double startlng = Convert.ToDouble(db.Users.Where(u => u.Id == 2).Select(u
=> u.longitude).Single());
var c = (from ev in db.Event
where (3959 * Math.Acos(Math.Cos((Math.PI * startlat / 180.0)) *
Math.Cos(Math.PI * (Convert.ToDouble(ev.latitude)) / 180.0) *
Math.Cos((Math.PI * (Convert.ToDouble(ev.longitude)) / 180.0) - (Math.PI *
(startlng) / 180.0)) + Math.Sin(Math.PI * (startlat) / 180.0)) *
Math.Sin(Math.PI * (Convert.ToDouble(ev.latitude) ) / 180.0) ) < 2500
select ev.Name).ToList();
но я получаю эту ошибку:
LINQ to Entities does not recognize the method 'Double Acos(Double)'
method, and this method cannot be translated into a store expression.
Я пытался использовать "public static double ToRadians" и передавать значение, но это не сработало, потому что это static
Есть идеи?