У меня есть class A { public float Score; ... }
и IEnumerable<A> items
и хотелось бы найти A
, который имеет минимальный балл.
Использование items.Min(x => x.Score)
дает минимальный балл, а не экземпляр с минимальным счетом.
Как я могу получить экземпляр путем повторения только один раз через мои данные?
Изменить. До сих пор существует три основных решения:
-
Написание метода расширения (предлагается Svish). Плюсы: Простая в использовании и оценке Оценка только один раз за элемент. Минусы: требуется метод расширения. (Я выбрал это решение для своего приложения.)
-
Использование агрегата (предложен Даниэлем Реншоу). Плюсы: Использует встроенный метод LINQ. Минусы: Немного запутаны неподготовленному глазу и вызывают оценщика более одного раза.
-
Реализация IComparable (предлагается киберзованием). Плюсы: Можно напрямую использовать Linq.Min. Минусы: Исправлено для одного компаратора - не может свободно выбирать компаратор при выполнении минимального вычисления.