c# - 如何使用 LINQ 和 C# 找到最接近 0,0 点的点

标签 c# linq point

我有一个点列表(List)

  • 7,43
  • 7,42
  • 6,42
  • 5,42
  • 6,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;

关于c# - 如何使用 LINQ 和 C# 找到最接近 0,0 点的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092371/

相关文章:

linq - 如何快速查找 List<T> 中的重复项,并更新原始集合

c# - 什么是适用于 2D 点结构的 `GetHashCode()` 算法(避免冲突)

c++ - 在 C++ 中访问抽象类成员中的类

C# 如何将点转换为 vector2?

c# - 在 C# 中转发事件

c# - 如何在 ADO.NET 对象上调用 Dispose?

c# - 选择多个 XML 节点到 List<T>

c# - Dictionary(of T) 中的 KeyNotFound 异常

c# - 与超链接文本对齐

c# - 解析GML文件