2011-01-06 65 views
10

我想從包含FullNames和ID的列表中獲取不同的FullNames,然後在列表框控件中顯示這些值。有沒有簡單的方法來做到這一點?由於本從列表中獲取不同的屬性值

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


      } 
     } 

回答

16

使用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

非常感謝!那麼ItemsSource應該如何設置? – Ben 2011-01-06 10:14:21

+0

大概獨一無二的名字。我目前無法檢查,雖然 – 2011-01-06 10:16:28

0

我認爲你可以在這裏使用不同的方法:

  1. 使SQL查詢不同的值。

  2. 檢查列表中是否有聯繫人。這種方法假設你的課程必須重新定義合法操作符。或者你可以檢查這個聯繫人ID是否已經在列表中。

  3. 使用上面提到的Linq查詢。