复杂排序依据:语句正文无法转换为表达式树
本文关键字:转换 表达式 正文 排序 语句 复杂 | 更新日期: 2023-09-27 18:35:31
基本上,我正在尝试从数据库中检索对象列表(使用实体框架 6),但是我希望以某种方式对项目进行排序。
我尝试了以下方法:
context.Coordinates.OrderBy(x =>
{
double latDif = Math.Abs(centerLat - x.Longtitude);
double lngDif = Math.Abs(centerLng - x.Latitude);
double dif = latDif + lngDif;
return dif;
});
但是,编译器显示以下错误:
具有语句正文的 lambda 表达式无法转换为 表达式树
我已经查了一下,并了解到在linq-to-sql中调用orderby时我不能使用语句正文(大括号)。
但是,我如何在不加载所有条目的情况下执行像上面这样的复杂排序呢?
顺便说一句,如果您想知道我正在尝试按最接近中心坐标(中心拉特和中心Lng)的项目对项目进行排序。
你可以
这样做。
context.Coordinates.OrderBy(x=> Math.Abs(centerLat - x.Longtitude) + Math.Abs(centerLng - x.Latitude));
如果您希望根据多列进行订购,请使用
.OrderBy(x=> new {
// fields or props or columns
})