57
задан 9 October 2008 в 20:41

1 ответ

Построение на других ответах, создание универсального компаратора было тем, которое я любил больше всего. Но я получил проблему с Linq Enumerable.Union ( MSDN ссылка .NET ), который был, что ее использование GetHashCode непосредственно, не принимая во внимание Равняется переопределению.

, Который взял меня для реализации Компаратора как:

public class Comparer<T> : IEqualityComparer<T>
{
    private readonly Func<T, int> _hashFunction;

    public Comparer(Func<T, int> hashFunction)
    {
        _hashFunction = hashFunction;
    }

    public bool Equals(T first, T second)
    {
        return _hashFunction(first) == _hashFunction(second);
    }

    public int GetHashCode(T value)
    {
        return _hashFunction(value);
    }
}

Используя его как это:

list.Union(otherList, new Comparer<T>( x => x.StringValue.GetHashCode()));

Примечание, что сравнение могло бы дать некоторую ложь, положительную начиная со сравниваемой информации, отображается на int значение.

1
ответ дан 1 November 2019 в 16:28

Другие вопросы по тегам:

Похожие вопросы: