本List<>类包含的.Insert()方法来做到这一点.当您搜索列表并找到"最近"元素(但是您定义该逻辑)时,您可以在列表中获取该对象的索引.然后在该索引之后插入新的.就像是:
var closestPoint = FindClosestPoint(listOfPoints, newPoint);
var index = listOfPoints.IndexOf(closestPoint);
listOfPoints.Insert(index + 1, newPoint);
Run Code Online (Sandbox Code Playgroud)
获得最接近的点应该是几何的简单问题.平面上有两个X/Y坐标.它们之间的距离是轴的平方和的平方根.所以你只需要那个值最小的元素.像这样的东西:
var closestPoint = listOfPoints
.Select(p => new {
Point = p,
Distance = Math.Sqrt(
Math.Pow(Math.Abs(p.X - closestPoint.X), 2) +
Math.Pow(Math.Abs(p.Y - closestPoint.Y), 2)
)
})
.OrderByDesc(p => p.Distance)
.First();
Run Code Online (Sandbox Code Playgroud)