Get Distinct property values from List

Ben picture Ben · Jan 6, 2011 · Viewed 10.2k times · Source

I am trying to get distinct FullNames from a list that contains FullNames and IDs then displaying these in a listBox control. Is there a simple way to do it? Thanks Ben

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??


            }
        }

Answer

Marc Gravell picture Marc Gravell · Jan 6, 2011

With LINQ:

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

should work. If the order is unimportant you could also use:

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

(and then use ToList() / OrderBy whatever you need)