public static T ArgExtremum()

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;
        }