Я пытаюсь вернуть список предметов, которые находятся, скажем, в 50 милях от заданного местоположения.
Моя таблица (упрощенная) выглядит следующим образом:
- Id
- Долгота
- Широта
- Положение дел
- Активный
У меня есть первоначальный запрос:
var query = db.MyTable.Where(o=> o.Status == "New" && o.Active == true);
query = query.Where(o => new Point(o.Longitude, o.Latitude)
.IsWithinDistance(new Point(_currentLongitude, _currentLatitude), 50));
var result = query.ToList()
Однако - похоже, это не работает, и я получаю сообщение об ошибке, как показано ниже - есть идеи, как это решить? или если есть лучший способ получить ближайшие предметы?
.Where(p =› new Point(p.Longitude, p.Latitude) .IsWithinDistance(geom: __p_3,
Distance: ___maxDistance_4))' не удалось перевести.Либо перепишите запрос в форме, которую можно перевести, либо явно переключитесь на оценку клиента, вставив вызов AsEnumerable(), AsAsyncEnumerable(), ToList() или ToListAsync(). См. https://go.microsoft.com/fwlink/?linkid=2101038. Чтобы получить больше информации.
Запуск.cs:
services.AddDbContext<AppDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
x => x.UseNetTopologySuite());
});
Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
. См. Пространственные данные EF Core и Пространственные данные в SQL Server EF Core Provider - person Matt Johnson-Pint   schedule 10.12.2020.UseNetTopologySuite
как показано здесь ? (Кроме того, я предполагаю, что SQL Server, пожалуйста, подтвердите или исправьте.) - person Matt Johnson-Pint   schedule 10.12.2020Point
из широты/долготы на данный момент не поддерживается. Возможно, вам придется хранить данные как типPoint
в вашей модели. - person ESG   schedule 10.12.2020var xx = query = (IQueryable<Profile>)query.Where(o => new Point(o.Longitude, o.Latitude) .IsWithinDistance(new Point(_profile.Longitude, _profile.Latitude), _maxDistance)).ToList();
, но все та же ошибка - person Steve   schedule 10.12.2020db.MyTable.Where(o=> o.Status == "New" && o.Active == true).ToList();.
- person coder_b   schedule 10.12.2020