Получить значения свойств Distinct из списка

Я пытаюсь получить отличные полные имена из списка, который содержит FullNames и ID, а затем отображает их в элементе управления ListBox. Есть ли простой способ сделать это? Спасибо Бен

using (DB2DataReader dr = command.ExecuteReader())
            {
                while (dr.Read())
                {

                Contact contact = new Contact();

                contact.ContactID = Convert.ToInt32(dr["CONTACT_ID"]);
                contact.FullName= dr["FULL_NAME"].ToString();


                myContacts.Add(contact);

                //contactsListBox.ItemsSource = myContacts.Distinct FullName??


            }
        }

Ответ 1

С LINQ:

var uniqueNames = myContacts.Select(c => c.FullName).Distinct().ToList();

должен работать. Если заказ неважен, вы также можете использовать:

var names = new HashSet<string>();
while(dr.Read()) {
    ...
    names.Add(contact.FullName);
}

(а затем используйте ToList()/OrderBy все, что вам нужно)

Ответ 2

Я думаю, вы можете использовать разные подходы здесь:

  • Создайте запрос Sql, который запрашивает различные значения.

  • Проверьте, что контакт уже включен в список. Этот подход предполагает, что ваш класс должен переопределить оператор euqality. Или вы можете проверить, что этот идентификатор контакта уже находится в списке.

  • Используйте запрос Linq, как указано выше.