Используя LINQ найти близлежащие места из базы данных

Мы хотим получить список близлежащих мест из базы данных, используя LINQ в ASP.NET 2012, и хотели бы получить отзывы о нашей стратегии.

Моя таблица и поддельные данные:

     PlaceId    Name       Latitude   Longitude 
       1          A          18.1        20.1
       2          B          18.2        20.2
       3          C          18.3        20.3

1) В нашем проекте текущее местоположение клиента (широта и долгота) берется в качестве входных данных

2) На стороне сервера, в зависимости от текущего местоположения клиента, нам нужно найти близлежащие места из базы данных, используя LINQ.

Вот код для SQL, который я использовал ранее, но теперь мы хотим использовать LINQ.

SELECT  name, Latitude, Longitude , 
  ( 3959 * acos( cos( radians(?) )* cos( radians( Latitude) ) * cos( radians( Longitude ) - radians(?) ) 
 + sin( radians(?) ) * sin( radians( Latitude) ) ) ) AS distance 
FROM TABLE_NAME 
HAVING distance < ? 
ORDER BY distance LIMIT 0 , 20

[Но вопрос в том, как написать такой запрос в LINQ.]

Моя работа над этим:

При поиске решения я наткнулся на этот код

        var Value1 = 57.2957795130823D;
        var Value2 = 3958.75586574D;

        var searchWithin = 20;

    double latitude = ConversionHelper.SafeConvertToDoubleCultureInd(Latitude, 0),
          longitude = ConversionHelper.SafeConvertToDoubleCultureInd(Longitude, 0);

    var location = (from l in sdbml.Places
                    let temp = Math.Sin(Convert.ToDouble(l.Latitude) / Value1) *  Math.Sin(Convert.ToDouble(latitude) / Value1) +
                             Math.Cos(Convert.ToDouble(l.Latitude) / Value1) *
                             Math.Cos(Convert.ToDouble(latitude) / Value1) *
                             Math.Cos((Convert.ToDouble(longitude) / Value1) - (Convert.ToDouble(l.Longitude) / Value1))
                         let calMiles = (Value2 * Math.Acos(temp > 1 ? 1 : (temp < -1 ? -1 : temp)))
                         where (l.Latitude > 0 && l.Longitude > 0)
                         orderby calMiles
                        select new location
                             {
                                    Name = l.name
                                });
                        return location .ToList();

Но проблема в том, как ссылаться на ConversionHelper или под каким пространством имен он идет.

Все советы приветствуются.

Ответы на вопрос(2)

Ваш ответ на вопрос