diff --git a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs
index d8c0ae1..432bd88 100644
--- a/ICD.Common.Utils/Extensions/EnumerableExtensions.cs
+++ b/ICD.Common.Utils/Extensions/EnumerableExtensions.cs
@@ -653,14 +653,15 @@ namespace ICD.Common.Utils.Extensions
}
///
- /// Shim to
+ /// Gets distinct elements from the sequence based on given callbacks.
///
///
///
///
+ ///
///
[PublicAPI]
- public static IEnumerable Distinct(this IEnumerable extends, Func comparer)
+ public static IEnumerable Distinct(this IEnumerable extends, Func comparer, Func getHashCode)
{
if (extends == null)
throw new ArgumentNullException("extends");
@@ -668,7 +669,7 @@ namespace ICD.Common.Utils.Extensions
if (comparer == null)
throw new ArgumentNullException("comparer");
- return extends.Distinct(new FuncComparer(comparer));
+ return extends.Distinct(new FuncComparer(comparer, getHashCode));
}
///
diff --git a/ICD.Common.Utils/FuncComparer.cs b/ICD.Common.Utils/FuncComparer.cs
index c9bb76a..34b5894 100644
--- a/ICD.Common.Utils/FuncComparer.cs
+++ b/ICD.Common.Utils/FuncComparer.cs
@@ -10,14 +10,17 @@ namespace ICD.Common.Utils
public sealed class FuncComparer : IEqualityComparer
{
private readonly Func m_Comparer;
+ private readonly Func m_GetHashCode;
///
/// Constructor.
///
///
- public FuncComparer(Func comparer)
+ ///
+ public FuncComparer(Func comparer, Func getHashCode)
{
m_Comparer = comparer;
+ m_GetHashCode = getHashCode;
}
public bool Equals(T x, T y)
@@ -27,7 +30,7 @@ namespace ICD.Common.Utils
public int GetHashCode(T obj)
{
- return obj.GetHashCode();
+ return m_GetHashCode(obj);
}
}
}