我对 Linq to Entity 很陌生,并且遇到了一些问题。
这是我的搜索存储库:
public static List<Centre> Search(Search search)
{
using (var context = new MeetingRoomsContext())
{
var query = context.Centres
.Include("Geo")
.OrderBy( NEED HELP WITH THIS PART )
return query.ToList();
}
}
我正在获取一个包含如下坐标的搜索对象:
Search.LongLat = "(-6.265275, 53.334442)"
我需要打破这一点,并根据数据库中的坐标进行一些数学运算,以便首先按最接近搜索点的顺序对结果进行排序。
用数学术语来说就是毕达哥拉斯:
squareRootOf((difference in latitude * difference in latitude) +
(difference in longitude * difference in longitude))
真的不知道如何做到这一点。非常感谢任何帮助
最佳答案
根本不需要平方根;按距离的平方排序与按距离排序相同:
.OrderBy(x => (x.Latitude - target.Latitude)*(x.Latitude - target.Latitude)
+ (x.Longitude - target.Longitude)*(x.Longitude - target.Longitude))
此技巧通常用于碰撞检测(例如视频游戏),以避免计算许多平方根。
关于linq - 使用 Linq 在 Order by 中进行数学计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985883/