2011-01-06 13 views
10

Estoy intentando obtener nombres completos de una lista que contenga FullNames e ID y luego mostrarlos en un control listBox. ¿Hay una manera simple de hacerlo? Gracias BenObtener valores de propiedad distintos de la lista

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


      } 
     } 

Respuesta

16

Con LINQ:

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

debería funcionar. Si la orden no es importante también se podría utilizar:

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

(y luego usar ToList()/OrderBy lo que sea necesario)

+0

Gracias mucho! ¿Y qué hay de ItemsSource en lo que se debería configurar? – Ben

+0

supuestamente uniqueNames. No puedo verificar en este momento, aunque –

+0

Gracias, lo he intentado pero no hay suerte que juegue con eso. – Ben

0

creo que se pueden utilizar diferentes enfoques aquí:

  1. Hacer SQL consulta que consulta valores distintos.

  2. Compruebe ese contacto ya en la lista. Este enfoque supone que su clase debe redefinir el operador de euqality. O puede verificar que esta identificación de contacto ya esté en la lista.

  3. Utilice la consulta Linq como se menciona anteriormente.

+0

Saludos Fui por la opción Linq – Ben

Cuestiones relacionadas