Max<TSource,TResult> - Как получить максимальный элемент?

92
22 января 2022, 18:30

У меня есть список (допустим, 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 в этой ситуации (без ручного перебора каждого значения в цикле)?

Заранее спасибо

Answer 1

Вам необходимо реализовать интерфейс IComparable<Video> у вашего класса Video и тогда можно применять метод Max к коллекции IEnumerable<Video>.

Максимальное значение из множества можно получить только в том случае, если на нем введено отношение порядка, т.е. правило по которому можно определить какой элемент больше другого. Вы тем куском кода, который вы указали, преобразовали множество Video в множество int и получили максимальный int.

READ ALSO
C# Программа не закрывается из-за потока

C# Программа не закрывается из-за потока

Почему C# WPF программа не закрывается из-за потока в отдельном классе?

101
MS Office Interop Word Копия целиком первой страницы

MS Office Interop Word Копия целиком первой страницы

Помогите с реализацией копии первой страницы целиком прямо в текущем документе на вторуюТ

112
RabbitMQ блокирует поток на входящие данные. C#

RabbitMQ блокирует поток на входящие данные. C#

Сразу извиняюсь за не полную инфу по вопросуНе знаю всех тонкостей библиотеки которая поставляет данные, собственно с ней и проблема при...

85
Автозаполнение реквизитов по ИНН

Автозаполнение реквизитов по ИНН

подскажите как получить реквизиты компаний по ИННСведения о контрагентах есть в ЕГРИП, ЕГРЮЛ

182