Мне сложно с этим справиться. Я пытаюсь выполнить поиск по радиусу, используя следующий помощник фильтра на IQueryable. Существует ряд других фильтров, которые применяются до применения RadiusSearch. Порядок не имеет особого значения, поскольку цель состоит в том, чтобы отложить запрос до операции ToList().
public static IQueryable<ApiSearchCommunity> RadiusSearch(this IQueryable<ApiSearchCommunity> communities)
{
var centerLatitude = 30.421278;
var centerLongitude = -97.426261;
var radius = 25;
return communities.Select(c => new ApiSearchCommunity()
{
CommunityId = c.CommunityId,
City = c.City,
//Distance = c.GetArcDistance(centerLatitude, centerLongitude, c.Latitude, c.Longitude, radius)
});
}
Можно ли каким-то образом написать помощника, такого как GetArcDistance, который, в свою очередь, вызывает UDF на SQL? Запрос, который я пытаюсь создать, следующий
SELECT
comms.community_id,
comms.city,
comms.distance
FROM (
SELECT
c.community_id,
c.city,
dbo.udf_ArcDistance(
30.421278,-97.426261,
c.community_latitude,
c.community_longitude
) AS distance
FROM communities c) AS comms
WHERE comms.distance <= 25
ORDER BY comms.distance