Вернуть динамическое поле с запросом Linq и EntityFrameworkCore 2.2 - PullRequest
1 голос
/ 07 марта 2019

У меня есть следующие POCO:

public class Trader : AuditableEntity
{
        public string Name { get; set; }
        public string Telephone { get; set; }
        public string Email { get; set; }
        public string Website { get; set; }
        public List<Address> Addresses { get; set; }
}

public class Address : AuditableEntity
{
    public Trader Trader { get; set; }
    /* reduce for brevity*/

    public decimal Latitude { get; set; }
    public decimal Longitude { get; set; }
    public IPoint Location { get; set; }
}

В настоящее время необходимо иметь возможность отозвать List<Trader> из поиска с использованием NetTopologySuite на основе переданного значения в широте, длине и расстоянии,В настоящее время наша служба предоставляет следующие услуги:

var currentLocation = new Point((double)customerLongitude, (double)customerLatitude) { SRID = 4326 };

var traders = context.Where<Trader>(x => x.Addresses.Any(y => y.Location.IsWithinDistance(currentLocation, distanceFromCustomer)));

До перехода на EntityFrameworkCore 2.2 будет использоваться хранимая процедура.В хранимой процедуре я мог бы динамически возвращать расстояние, которое было у трейдера по лонг-лангу, от переданного по латунино, а также возвращаемые данные;

Distance = (@GEO1.STDistance(geography::Point(ISNULL(Latitude,0.000000),ISNULL(Longitude,0.000000), 4326)))

Можно ли использовать linq для динамической геолокации ивыбрать расстояние таким же образом, как и хранимый процесс, и эффективно добавить его в результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...