Здравствуйте, AndrewVK, Вы писали:
AVK>Что то я подумал, что вот так тупо переносить с типа элемента на тип контейнера логику бессмысленно. Поэтому теперь все вариации при отсутствии элементов возвращают default(TSource).
Таким образом может быть невозможно понять, нашли ли мы элемент с максимальным значением или нет.
Представим, что у нас есть IEnumerable<Point> и надо найти точку с максимальным значением по оси Y. В коде может быть неизвестно, есть/были ли в source коллекции элементы или нет:
var maxYpoint = data.Where(d => d.SomeProperty == xxx).Select(d => d.Point).MaxItem(p => p.Y);
// maxYpoint.X & Y == 0. Значит ли это что мы нашли точку с максимальным значением Y или у нас после фильтрации вообще элементов не было?