基本上我正在尝试从我的数据库中检索对象列表(使用Entity Framework 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时我不能使用语句体(大括号)。
但是,如何在不加载所有条目的情况下执行上述复杂订单?
顺便说一下,如果你想知道我正试图通过最接近中心坐标(centerLat和centerLng)的物品订购物品。
答案 0 :(得分:1)
你可以这样做。
context.Coordinates.OrderBy(x=> Math.Abs(centerLat - x.Longtitude) + Math.Abs(centerLng - x.Latitude));
如果您希望根据多个列进行订购,请使用
.OrderBy(x=> new {
// fields or props or columns
})