C# foreach循环将项目添加到组合框
我想循环浏览一个person对象列表,每个人都有一些不同的品质,比如一个人有一本书,另一个人有一个表,但所有人都有相同的姓名、id、电子邮件和姓氏。当我循环浏览它时,它会将每个具有不同品质的人添加到我的组合框中。我只想在组合框中添加一个人的.ToString。我希望以后能够使用combobox.selectedItem获得该项目的质量。这是我的密码:C# foreach循环将项目添加到组合框,c#,list,loops,foreach,C#,List,Loops,Foreach,我想循环浏览一个person对象列表,每个人都有一些不同的品质,比如一个人有一本书,另一个人有一个表,但所有人都有相同的姓名、id、电子邮件和姓氏。当我循环浏览它时,它会将每个具有不同品质的人添加到我的组合框中。我只想在组合框中添加一个人的.ToString。我希望以后能够使用combobox.selectedItem获得该项目的质量。这是我的密码: foreach (Person personObj in _listAllData) { if (!cboSelectClient.Ite
foreach (Person personObj in _listAllData)
{
if (!cboSelectClient.Items.Contains(personObj.ID))
{
cboSelectClient.Items.Add(personObj.ToString());
}
}
任何建议都会有帮助,thanx提前。如果我了解您正试图正确执行的操作:
cboSelectClient.Items.Add(personObj.ToString());
将表示为单个字符串的整个person对象添加到组合框中。
在if
子句中,您只检查person对象的ID
因此,您的if
子句正在查找一个仅与此人的ID
匹配的字符串,但您的组合框包含列为ID+此人的其他详细信息的元素。除非某个人对象在组合框中只列出了他的“ID”,否则它们永远不会匹配
您可能需要遍历组合框中的每个项目,并检查每个项目是否具有您正在寻找的作为子字符串的“ID”。此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());
}
}
如果只将ToString
方法的结果放入组合框中,SelectedItem
将只包含字符串。但是,请注意,默认情况下,您应该能够将person对象本身添加到组合框中(然后该组合框将自动显示其ToString
返回值);它将所有人添加到我的ComboBox中,我只希望它显示其中一人