Учитывая широту и долготу пользователя, я хочу получить окружающих меня пользователей из базы данных.
Возможный дубликат:
Как вызвать пользовательскую функцию в LINQ в моем веб-сервисе Visual C# для моего приложения для Android?
В настоящее время я разрабатываю приложение для Android, которое будет использовать местоположение пользователя. База данных будет хранить все местоположение пользователя по широте и долготе. Я знаю, как рассчитать расстояние от двух точек, и это немного сложно.
Тем не менее, в моем веб-сервисе, написанном на Visual C#, я не могу написать что-то вроде этого:
из a в db.Location.Where(a => distanceBetweenTwoLocations(GivenLat, GivenLong, a.lat, a.longi)<500) выберите новый {...}
потому что linq не позволит мне вызвать мою собственную функцию. Кто-нибудь может предложить какой-то способ достижения моей цели? Для простоты я хочу найти других пользователей, которые находятся на расстоянии 500 метров от меня. У меня есть все местоположения пользователей по широте и долготе в моей базе данных.
2 ответа
Посмотрите на Nerddinner. http://nerddinnerbook.s3.amazonaws.com/Part11.htm
(используйте функцию distancebetween)
Создайте соответствующие функции в вашей базе данных.
затем позвоните им в вашем C#
Ответ уже есть, хотя он указывается в милях (1609,344 метра) вместо 500, но используемый расчет, вероятно, будет соответствовать вашему счету. Он использует SQL, а не LINQ, но вы можете легко преобразовать его в выражение LINQ, особенно если у вас есть такой инструмент, как LINQPad.