in code/KustoCopyConsole/EnumerableHelper.cs [11:36]
public static T ArgExtremum<T, C>(
this IEnumerable<T> enumerable,
Func<C, C, int> comparer,
Func<T, C> selector)
{
T? extremumItem = default;
C? extremumValue = default;
foreach (var item in enumerable)
{
if (extremumItem == null
|| extremumValue == null
|| comparer(selector(item), extremumValue) > 0)
{
extremumItem = item;
extremumValue = selector(item);
}
}
if (extremumItem == null)
{
throw new InvalidOperationException("Enumerable is empty");
}
return extremumItem;
}