diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs index 85907c0..df1cac4 100644 --- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs +++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs @@ -1305,6 +1305,37 @@ namespace ICD.Common.Utils.Extensions } } + /// + /// Returns the minimum value from the sequence, otherwise the default value. + /// + /// + /// + /// + public static T MinOrDefault([NotNull] this IEnumerable extends) + { + if (extends == null) + throw new ArgumentNullException("extends"); + + Comparer comparer = Comparer.Default; + T value = default(T); + bool first = true; + + foreach (T x in extends) + { + if (first) + { + first = false; + value = x; + continue; + } + + if (comparer.Compare(x, value) < 0) + value = x; + } + + return value; + } + /// /// Returns the maximum value from the sequence, otherwise the default value. /// @@ -1319,14 +1350,10 @@ namespace ICD.Common.Utils.Extensions Comparer comparer = Comparer.Default; T value = default(T); - using (IEnumerator enumerator = extends.GetEnumerator()) + foreach (T x in extends) { - while (enumerator.MoveNext()) - { - T x = enumerator.Current; - if (comparer.Compare(x, value) > 0) - value = x; - } + if (comparer.Compare(x, value) > 0) + value = x; } return value;