У меня есть список (допустим, 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.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Почему C# WPF программа не закрывается из-за потока в отдельном классе?
Помогите с реализацией копии первой страницы целиком прямо в текущем документе на вторуюТ
Сразу извиняюсь за не полную инфу по вопросуНе знаю всех тонкостей библиотеки которая поставляет данные, собственно с ней и проблема при...
подскажите как получить реквизиты компаний по ИННСведения о контрагентах есть в ЕГРИП, ЕГРЮЛ