From de00acbf79fa7ac50972a0bc5e2a4ddca17edcb7 Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Tue, 12 Nov 2019 17:12:20 -0500 Subject: [PATCH] feat: Adding extension method for getting max value from a sequence, otherwise a default value --- .../Extensions/EnumerableExtensions.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs index 1cfb944..85907c0 100644 --- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs +++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs @@ -1305,6 +1305,33 @@ namespace ICD.Common.Utils.Extensions } } + /// + /// Returns the maximum value from the sequence, otherwise the default value. + /// + /// + /// + /// + public static T MaxOrDefault([NotNull] this IEnumerable extends) + { + if (extends == null) + throw new ArgumentNullException("extends"); + + Comparer comparer = Comparer.Default; + T value = default(T); + + using (IEnumerator enumerator = extends.GetEnumerator()) + { + while (enumerator.MoveNext()) + { + T x = enumerator.Current; + if (comparer.Compare(x, value) > 0) + value = x; + } + } + + return value; + } + /// /// Computes the sum of a sequence of byte values. ///