MinBy и MaxBy в LINQ
Методы MinBy и MaxBy возвращают исходный
элемент, а не только ключ сравнения. При равных
ключах остаётся первый из них в порядке
перечисления.
Из двух записей с разным Score
MaxBy выберет имя "b" - у него
балл 5:
var items = new[] { new { Name = "a", Score = 2 }, new { Name = "b", Score = 5 } };
var best = items.MaxBy(i => i.Score);
Console.WriteLine(best.Name);
При равных ключах остаётся первый элемент. У "x" и "y" балл 3, поэтому остаётся "x". На пустой последовательности результат сравнивают с default:
var items = new[] { new { Name = "x", Score = 3 }, new { Name = "y", Score = 3 } };
var low = items.MinBy(i => i.Score);
Console.WriteLine(low?.Name);
var empty = Array.Empty<(string Name, int Score)>();
Console.WriteLine(empty.MinBy(i => i.Score) == default);
Выберите самый дешёвый товар и выведите его название.
Найдите событие с самой поздней датой и выведите его название.