2014-02-08 79 views
0

我想通過一個人物對象列表循環,每個人都有一些不同的特質,就像一個人有一本書,另一個人有一張桌子,但所有人都有相同的姓名,身份證,電子郵件和姓氏。當我循環播放時,它會將每個具有不同質量的人添加到我的組合框中。我只希望它將一個人的.ToString添加到組合框中。我希望能夠使用combobox.selectedItem來獲得該項目的品質。這裏是我的代碼:foreach循環添加項目到組合框

foreach (Person personObj in _listAllData) 
{ 
    if (!cboSelectClient.Items.Contains(personObj.ID)) 
    { 
     cboSelectClient.Items.Add(personObj.ToString()); 
    } 
} 

任何建議將有所幫助,thanx提前。

+0

如果你只把'ToString'方法的結果在組合框中,'SelectedItem'將只包含字符串。但是,請注意,默認情況下,您應該可以將人員對象本身添加到您的組合框(應該自動顯示其ToString返回值)。 –

+0

如果我將語句更改爲cboSelectClient.Items.Add(personObj);它將所有人添加到我的組合框中 – user2980509

+0

我只希望它顯示其中一個人 – user2980509

回答

0

如果我理解你正在嘗試做正確:

cboSelectClient.Items.Add(personObj.ToString()); 

增加了整個Person對象表示爲一個字符串到組合框。 在if子句中,您只檢查人員對象的ID

因此,您的if子句正在尋找僅匹配人的ID的字符串,但您的組合框包含列爲ID + other details of the person的元素。除非某個人對象在組合框中列出了他的「ID」,否則他們永遠不會匹配。

您可能需要遍歷組合框中的每個項目,並檢查每個項目是否具有您要查找的「ID」作爲子字符串。

0

這LINQ將能夠幫助ü

Foreach (var personObj in _listalldata.group(v=>v.id).select(s=>new { id = s.First().id}).tolist()) 
    { 
       if (!cboSelectClient.Items.Contains(personObj.id)) 
       { 
        cboSelectClient.Items.Add(personObj.id.ToString()); 
       } 
      }