Вот пример кода, который я писал тысячи раз в своей жизни:
// find bestest thingy
Thing bestThing;
float bestGoodness = FLOAT_MIN;
foreach( Thing x in arrayOfThings )
{
float goodness = somefunction( x.property, localvariable );
if( goodness > bestGoodness )
{
bestGoodness = goodness;
bestThing = x;
}
}
return bestThing;
И мне кажется, что C#уже должен иметь что-то, что делает это всего за одну строку. Что-то вроде:
return arrayOfThings.Max( delegate(x)
{ return somefunction( x.property, localvariable ); });
Но это не возвращает предмет (или индекс предмета, который был бы в порядке), который возвращает значение качества-соответствия-.
Так что, может быть, что-то вроде:
var sortedByGoodness = from x in arrayOfThings
orderby somefunction( x.property, localvariable ) ascending
select x;
return x.first;
Но это делает весь массив целиком и может быть слишком медленным.
Существует ли это?