Используйте HashSet<Admin_Fee>
и внедрите Equals
и GetHashCode
в Admin_Fee
, чтобы два экземпляра Admin_Fee
считались равными, если они имеют одинаковое значение BP
:
public Class BE
{
public string Name {get;set:)
public HashSet<Admin_Fee> Admin_Fee_Prop {get;set:)
}
public class Admin_Fee
{
public string BP_Name { get; set; }
public int BP { get; set; }
public int BP_Perc { get; set; }
public override bool Equals(object other)
{
if (!(other is Admin_Fee))
return false;
return this.BP == ((Admin_Fee)other).BP;
}
public override int GetHashCode()
{
return BP;
}
}
Другой возможный подход - реализовать IEqualityComparer<Admin_Fee>
и передать его в качестве параметра конструктору HashSet<Admin_Fee>
.
Иногда мне также может понадобиться уникальность в сложных свойствах
В этом случае вам необходимо учесть все эти свойства в Equals
и GetHashCode
. Для примеров того, как генерировать хеш-код из нескольких свойств, посмотрите на этот ответ .