特定の場所から 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を参照してください。
Startup.cs:
services.AddDbContext<AppDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
x => x.UseNetTopologySuite());
});