获取具有条件的列表点的最大值

时间:2014-02-01 16:49:41

标签: c# list max points

我有一个积分列表。 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)

4 个答案:

答案 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();