我有点结构数组:
Point[] arr = samples.pointsArray;
我需要从这个 X 是最大数字的数组点中检索。
Point maxX= (some logic);
知道如何实现吗?
使用OrderBy
和First
LINQ 运算符:
Point minX = arr.OrderBy(p => p.X).First();
Point maxX = arr.OrderByDescending(p => p.X).First();
或者
Point maxX = arr.OrderBy(p => p.X).Last();
替代解决方案(不使用OrderBy
):
如何在不使用 OrderBy 的情况下从点数组中获取具有最小 X 的点?
无需按照@Rotem 的建议重新排序数组(!?!),您可以简单地执行以下操作:
int maxX = arr.Max(p => p.X);
Point maxXPt = arr.First(p => p.X == maxX);
请注意,这是在 O(n) 中完成的,而OrderBy
方法是 O(n log n)。