Если ваш простой класс использует Equals
таким образом, который удовлетворяет вашим требованиям, тогда вы можете использовать метод Distinct
var col = ...;
var noDupes = col.Distinct();
Если нет, вам потребуется предоставить экземпляр IEqualityComparer<T>
, который сравниваетценности по вашему желанию.Например (для краткости игнорируются нулевые проблемы)
public class MyTypeComparer : IEqualityComparer<MyType> {
public bool Equals(MyType left, MyType right) {
return left.Name == right.Name;
}
public int GetHashCode(MyType type) {
return 42;
}
}
var noDupes = col.Distinct(new MyTypeComparer());
Обратите внимание, что использование константы для GetHashCode
является преднамеренным.Не зная подробных сведений о семантике MyType
, невозможно написать эффективную и правильную функцию хеширования.Вместо эффективной функции хеширования я использовал константу, которая является правильной независимо от семантики типа.