我有一个积分列表。 List<Point> points = new List<Point>();
我希望得到列表中y坐标的最大值,条件是它只用特定的x坐标扫描列表内的坐标。
例如:
我有这样的观点
(1,1)
(1,2)
(1,3)
(1,4)
(1,5)
(2,1)
(2,2)
(2,3)
(2,4)
(2,5)
我想找到y轴或y坐标的最大值,因为它只搜索带有2的坐标作为x的值。所以输出必须是(2,5)
答案 0 :(得分:2)
使用LINQ获取具有最大Y坐标的点:
Point maximumPoint = points.First(p => p.X == 2 &&
p.Y == points.Max(po => po.Y));
OR
Point maximumPoint = new Point(2, points.Where(p => p.X == 2).Max(p => p.Y));
答案 1 :(得分:1)
使用LINQ,您可以:
var result = points.Where(point => point.X == 2)
.Max(point => point.Y);
如果你想要Point而不仅仅是Y坐标,那么只需要新建一个Point wih(2,result)即可。
但在更复杂的情况下,请考虑使用MaxBy
运算符,例如one that comes with morelinq。
答案 2 :(得分:1)
使用linq,这将通过
var maxY = points.Where(p => p.X == 2).Select(p=> p.Y).Max();
答案 3 :(得分:1)
这可能是:
var maxY = points.Where(po => po.X == 2).Max(po => po.Y);
var q = points.Where(p =>
p.Y == maxY &&
p.X == 2).FirstOrDefault();