Учитывая широту и долготу пользователя, я хочу получить окружающих меня пользователей из базы данных.

Возможный дубликат:
Как вызвать пользовательскую функцию в 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.

Другие вопросы по тегам