我有点数组(Points [])。数组内的所有点都具有相同的Y值。
例如4分:
(12 : 27)
(13 : 27)
(27 : 27)
(28 : 27)
我需要从此数组获得两个点, X 轴的差异最大。
在这个例子中,这些点是:
(12:27),(28:27)
如何借助Array扩展获取这些点,如何编写Lambda表达式?
Point[] points = Array.Find(arrPoints,"Lambda expression");
OR
Point[] points = arrPoints.Select("Lambda expression");
(我可以使用任何扩展方法ont仅Find()或Select())
答案 0 :(得分:0)
Array.Sort(points, (p1, p2) => p1.X.CompareTo(p2.X));
return new[] { points[0], points[points.Length-1] };
注意 - 这首先对数组执行就地排序,这意味着它的顺序会永久更改。
您可以改为:
var pDash = points.OrderBy(p => p.X).ToArray();
return new[] { pDash[0], pDash[pDash.Length-1] };
我个人更喜欢第一种,因为它不涉及两倍的内存使用量。
然而, Array.Sort
并不总是优选的,因为它不是一个稳定的排序 - 但是在这种情况下它并不重要,因为最坏的情况是两个相同的点被交换 - 但它们仍然代表太空中的同一点,所以它不应该是一个问题。