foreach Loop将项目添加到组合框中

时间:2014-02-08 16:24:00

标签: c# list loops foreach

我想循环遍历一个人物对象列表,每个人都有一些不同的品质,比如一个人有一本书,另一个人有一张桌子,但所有人都有相同的名字,身份证,电子邮件,和姓氏。当我遍历它时,它会将每个具有不同质量的人添加到我的组合框中。我只希望它将一个人的.ToString添加到组合框中。我希望能够使用combobox.selectedItem来获取该项目的质量。这是我的代码:

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

任何建议都会有所帮助,而不是提前。

2 个答案:

答案 0 :(得分:0)

如果我理解你正在尝试做的事情:

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

将整个人物Object表示为单个字符串添加到组合框中。 在if子句中,您只检查person对象的ID

因此,您的if子句正在查找仅与该人的ID匹配的字符串,但您的组合框包含列为ID + other details of the person的元素。它们永远不会匹配,除非某些人物对象只在组合框中列出了他的“ID”。

您可能必须遍历组合框中的每个项目,并检查每个项目是否具有您要查找的子ID作为子字符串。

答案 1 :(得分: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());
                }
            }