2014-02-01 7 views
1

У меня есть список Баллы. 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) 

Я хочу, чтобы найти самое большое значение оси у или у-координаты, учитывая, что это только поиск координат с 2, как значение x. поэтому выход должен быть (2,5)

ответ

2

Использование LINQ, чтобы получить точку с самой большой Y координат:

Point maximumPoint = points.First(p => p.X == 2 && 
             p.Y == points.Max(po => po.Y)); 

ИЛИ

Point maximumPoint = new Point(2, points.Where(p => p.X == 2).Max(p => p.Y)); 
1

С помощью LINQ, вы можете сделать:

var result = points.Where(point => point.X == 2) 
        .Max(point => point.Y); 

Если вы хотите, чтобы точка вместо только Y-координату, это достаточно просто, чтобы просто новый вверх a Point wih (2, результат). Но в более сложных случаях рассмотрите оператор MaxBy, например one that comes with morelinq.

1

С помощью LINQ, это будет по

var maxY = points.Where(p => p.X == 2).Select(p=> p.Y).Max(); 
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(); 
Смежные вопросы