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 關注
- 343 瀏覽
添加回答
舉報