Создайте список без дубликатов в C#
В этом примере создается список объектов Person без дубликатов. Следующий код показывает класс Person.
public class Person : IEquatable{ public string FirstName, LastName; public Person(string first_name, string last_name) { FirstName = first_name; LastName = last_name; } public override string ToString() { return FirstName + " " + LastName; } public bool Equals(Person other) { if (other == null) return false; if (FirstName != other.FirstName) return false; if (LastName != other.LastName) return false; return true; } }
Этот класс объявляет простые FirstName и LastName поля, определяет конструктор инициализации и переопределяет метод ToString класса.
Он также реализует интерфейс IEquatable. Для этого интерфейса требуется метод Equals, который в этом примере возвращает true, если два объекта Person представляют одного и того же человека.
Следующий код показывает, как программа использует класс.
private ListPeople = new List (); // Добавить нового человека, если этого человека еще нет в списке. private void btnAdd_Click(object sender, EventArgs e) { lstPeople.DataSource = null; Person person = new Person(txtFirstName.Text, txtLastName.Text); if (!People.Contains(person)) People.Add(person); txtFirstName.Clear(); txtLastName.Clear(); txtFirstName.Focus(); lstPeople.DataSource = People; }
Код начинается с объявления списка People.
Если вы введете имя и фамилию и нажмите кнопку «Добавить», выполняется обработчик события Click. Он устанавливает DataSource элемент управления ListBox в null, чтобы он больше не отображал никаких предыдущих значений. Затем обработчик события использует введенные вами значения для создания нового объекта Person.
Далее код использует метод Contains списка, чтобы увидеть, содержит ли он уже объект с тем же именем и фамилией. Класс Person реализует IEquatable, поэтому метод Contains использует его, чтобы увидеть, содержит ли список уже существующий объект, эквивалентный новому. Если Contains возвращает false, код добавляет новый элемент в список.