Приветствую!
Я ищу способ поиска в коллекции объекта, который лучше всего удовлетворяет мои требования. критерии. Поскольку мне приходится делать это довольно часто, Я искал, как выполнить запрос с помощью LINQ, но не смог найти простой способ сделать это, который бы не «казался» тратой времени.
Функциональной реализацией будет:
collection.OrderByDescending (f = > FitFunction (f)). First ()
Но, похоже, это излишне выполняет сортировку. Мне действительно просто нужно линейное сканирование. Функция Min LINQ возвращает наилучшее соответствие, а не объект, который дает наилучшее соответствие, и поэтому не кажется полезным.
Для ясности, код не-LINQ, который я обычно писал (и делал это так много раз ):
T best;
float bestFit = something very low;
foreach (T ob in collection)
{
float fit = FitFunction(ob);
if (fit > bestFit)
{
bestFit = fit;
best = ob;
}
}
return best;
И я думаю, что могу просто создать свой собственный метод расширения для этого; но мне кажется, что в LINQ уже должен быть способ сделать это.
Спасибо!