diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs index 4a541e6..96b26b9 100644 --- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs +++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs @@ -1407,7 +1407,27 @@ namespace ICD.Common.Utils.Extensions if (extends == null) throw new ArgumentNullException("extends"); - return extends.AggregateOrDefault((a, b) => Comparer.Default.Compare(a, b) < 0 ? a : b); + return extends.MinOrDefault(v => v); + } + + /// + /// Returns the minimum value from the sequence, otherwise the default value. + /// + /// + /// + /// + /// + /// + public static TValue MinOrDefault([NotNull] this IEnumerable extends, [NotNull] Func selector) + { + if (extends == null) + throw new ArgumentNullException("extends"); + + if (selector == null) + throw new ArgumentNullException("selector"); + + return extends.Select(selector) + .AggregateOrDefault((a, b) => Comparer.Default.Compare(a, b) < 0 ? a : b); } /// @@ -1421,7 +1441,27 @@ namespace ICD.Common.Utils.Extensions if (extends == null) throw new ArgumentNullException("extends"); - return extends.AggregateOrDefault((a, b) => Comparer.Default.Compare(a, b) > 0 ? a : b); + return extends.MaxOrDefault(v => v); + } + + /// + /// Returns the maximum value from the sequence, otherwise the default value. + /// + /// + /// + /// + /// + /// + public static TValue MaxOrDefault([NotNull] this IEnumerable extends, [NotNull] Func selector) + { + if (extends == null) + throw new ArgumentNullException("extends"); + + if (selector == null) + throw new ArgumentNullException("selector"); + + return extends.Select(selector) + .AggregateOrDefault((a, b) => Comparer.Default.Compare(a, b) > 0 ? a : b); } ///