2 回答
TA贡献1788条经验 获得超4个赞
C# 7 有元组,我想您正在寻找它!
例如元组列表:
var positions = new List<(int x, int y)>
{
(3,4),
(5,4),
(5,1)
};
您可以找到“最近的”,例如如下所示:
(int x, int y) value = (1, 1);
var closest = positions.OrderBy(p => (p.x - value.x) + (p.y - value.y)).First(); // finds (5,1)
TA贡献1785条经验 获得超8个赞
我假设这些点是平面上的点,我们可以使用毕达哥拉斯定理来获得两点之间的距离。
有了这个假设,我将创建一个新类来保存 x/y 位置数据和一个DistanceBetween
运行Pythagorean theorem
.
static void Main(string[] args)
{
List<Point> points = new List<Point>
{
new Point(3, 4),
new Point(5, 4),
new Point(5, 1)
};
Point closestPoint = points.OrderBy(point => point.DistanceFromPoint(new Point(1, 1))).FirstOrDefault();
Console.WriteLine($"The closest point to 1,1 is {closestPoint.PosX},{closestPoint.PosY}");
Console.ReadLine();
}
private class Point
{
public Point(int posX, int posY)
{
PosX = posX;
PosY = posY;
}
public int PosX { get; set; }
public int PosY { get; set; }
public double DistanceFromPoint(Point otherPoint)
{
return Math.Sqrt(Math.Pow((otherPoint.PosX - PosX), 2) + Math.Pow((otherPoint.PosY - PosY), 2));
}
}
- 2 回答
- 0 关注
- 240 浏览
添加回答
举报