У меня есть список (допустим, List) экземпляров Video:
class Video
{
public Video(int r){
resolution = r;
}
public int resolution;
}
var list = new List<Video>();
list.Add(new Video(0));
list.Add(new Video(100));
list.Add(new Video(50));
Не пойму, как я могу с помощью метода Max с такой сигнатурой:
Max<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
могу получить на выходе видео с максимальным значением resolution?
Я думал, что это делается просто:
Video video = list.Max(v => v.resolution);
Но компилятор пытается в итоге преобразовать v.resolution (тип int) к типу Video. Не понимаю, как я могу идиоматично получить объект из списка с максимальным resolution в этой ситуации (без ручного перебора каждого значения в цикле)?
Заранее спасибо
Вам необходимо реализовать интерфейс IComparable<Video> у вашего класса Video и тогда можно применять метод Max к коллекции IEnumerable<Video>.
Максимальное значение из множества можно получить только в том случае, если на нем введено отношение порядка, т.е. правило по которому можно определить какой элемент больше другого. Вы тем куском кода, который вы указали, преобразовали множество Video в множество int и получили максимальный int.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей