Получить значения свойств 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, как указано выше.