Получить отличительные значения свойств из списка - PullRequest
11 голосов
/ 06 января 2011

Я пытаюсь получить отдельные FullNames из списка, который содержит FullNames и идентификаторы, а затем отображать их в элементе управления 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??


            }
        }

Ответы [ 2 ]

18 голосов
/ 06 января 2011

С LINQ:

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

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

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

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

0 голосов
/ 06 января 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...