Wywołanie funkcji zdefiniowanej przez użytkownika SQL w zapytaniu LINQ
Trudno mi to zrobić. Próbuję wykonać wyszukiwanie promienia za pomocą następującego pomocnika filtru na IQueryable. Istnieje zestaw innych filtrów, które są stosowane przed zastosowaniem RadiusSearch. Kolejność nie powinna mieć znaczenia, ponieważ celem jest odroczenie zapytania do operacji 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)
});
}
Czy mogę jakoś napisać pomocnika takiego jak GetArcDistance, powyżej którego z kolei wywołuje UDF na SQL? Zapytanie, które próbuję wygenerować, jest następujące
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