我有一個數據庫充滿座標(x,y),我希望找到最接近點的座標。 (可以有多個最接近這一點)LINQ找到最近的座標
我寫這2 LINQ的,但必須有一個SMARTE的方式,不是通過數據庫去兩次:
var closestDistance = _context.Coordinates.Min(x =>
Math.Sqrt(Math.Pow((point.coordX - x.CoordX), 2) +
Math.Pow((point.coordY- x.CoordY), 2)));
var closest = _context.Coordinates.Where(x=> closestDistance ==
Math.Sqrt(Math.Pow((point.coordX - x.CoordX), 2) +
Math.Pow((point.coordY - x.CoordY), 2)));
如何優化這個?
順便說一句,如果你只是想找到最接近的(而不是實際的距離),你不需要平方根值。 –
你不能使用kd樹嗎? –
@Matthew我真的不知道... Math.Pow會很容易解決..如果EF翻譯,我的問題仍然會是,我怎麼能達到我想要的結果只有一個全表掃描,而不是2現在 – sirius