我有一个点列表(List)
> 7,43
> 7,42
> 6,42
> 5,43
> 5,43
我想使用linq表达式来获得最接近0,0的点.例如 – 对于这个列表,我预计有5,42的价值.
如何用LINQ找到最接近0,0点的点?
解决方法
以下找到最低L ^ 2范数(二维中最常见的“距离”定义)的点,而不执行整个列表的昂贵类型:
var closestToOrigin = points .Select(p => new { Point = p,Distance2 = p.X * p.X + p.Y * p.Y }) .Aggregate((p1,p2) => p1.Distance2 < p2.Distance2 ? p1 : p2) .Point;