DynamicEqualityComparer Class
Definition
- Namespace
- Cuemon.Collections.Generic
- Assemblies
- Cuemon.Core.dll
Provides a factory based way to create and wrap an IEqualityComparer<T> implementation.
public static class DynamicEqualityComparer
- Inheritance
-
DynamicEqualityComparer
Examples
The following example shows how to create a case-insensitive IEqualityComparer<string> using DynamicEqualityComparer with lambda expressions. It filters distinct values from a mixed-case word list and prints the result.
using System;
using System.Collections.Generic;
using System.Linq;
using Cuemon.Collections.Generic;
namespace MyApp.Examples;
public static class DynamicEqualityComparerExample
{
public static void Demonstrate()
{
string[] words = ["Hello", "world", "hello", "World", "HELLO"];
// Create a case-insensitive equality comparer for strings
IEqualityComparer<string> caseInsensitive = DynamicEqualityComparer.Create<string>(
hashCalculator: s => StringComparer.OrdinalIgnoreCase.GetHashCode(s),
equalityComparer: (x, y) => string.Equals(x, y, StringComparison.OrdinalIgnoreCase));
string[] distinct = words.Distinct(caseInsensitive).ToArray();
Console.WriteLine(string.Join(", ", distinct));
}
}
Methods
| Name | Description |
|---|---|
| Create<T>(Func<T, int>, Func<T, T, bool>) | Creates a dynamic instance of an IEqualityComparer<T> implementation wrapping GetHashCode(T) through |