use*_*114 1 c# linq entity-framework
我有这个查询,我试图按距离排序。但是,linq 向我抛出一个错误,指出它无法识别 GetDistanceTo 方法。当删除 OrderBy 子句时,查询将起作用。
var coord = new GeoCoordinate { Latitude = (double?)array.latitude ?? 0, Longitude = (double?)array.longitude ?? 0 };
var property = db.Properties.Select(x => new SearchResultsViewModel
{
geocoord = new GeoCoordinate { Latitude = (double?)x.latitude ?? 0, Longitude = (double?)x.longitude ?? 0 }
}).OrderBy(x=>x.geocoord.GetDistanceTo(coord)).ToList();
Run Code Online (Sandbox Code Playgroud)
LINQ to Entities 必须将表达式转换为可针对数据库执行的 SQL 查询。它不知道如何转换GetDistanceTo成 SQL 查询。
您可以调用AsEnumerablebeforeOrderBy来强制将排序作为内存中 LINQ to Objects 查询执行。
var property = db.Properties.Select(x => new SearchResultsViewModel
{
geocoord = new GeoCoordinate { Latitude = (double?)x.latitude ?? 0, Longitude = (double?)x.longitude ?? 0 }
}).AsEnumerable().OrderBy(x=>x.geocoord.GetDistanceTo(coord)).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |