检查项目是否在组合框列表中

时间:2010-11-11 14:35:35

标签: winforms list combobox

我通过从数据库创建列表来动态填充winforms组合框。

List<string> locationList = new List<string>();

        foreach(Data.DataSet.vwGet_RepListRow row in Data.Manager.TAM.RepListViewTableAdapter.GetData())
           locationList.Add(row.Location_City);

        this.LocationComboBox.DataSource = locationList;

我遇到的问题是,现在总共有3个地点,但有65名员工,所以发生的事情是我在组合框中重复了城市。如何编辑上面的内容以检查locationList中是否已存在新的Location_City?如果不存在,则添加它,但如果存在,则跳过它。

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

if (!locationList.Contains(row.Location_City))
    locationList.Add(row.Location_City);

locationList的类型为List,它实现了IList。因此,您可以使用Contains方法检查项目是否已存在。

http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspx

此外,您还可以使用HashSet而不是List并使用其Distinct()方法。

http://msdn.microsoft.com/en-us/library/bb359438.aspx

答案 1 :(得分:1)

更改您的代码以包含以下检查:

List<string> locationList = new List<string>();

        foreach(Data.DataSet.vwGet_RepListRow row in Data.Manager.TAM.RepListViewTableAdapter.GetData())
           string locationCity = row.Location_City;
           if (!locationList.Contains(locationCity))
           {
                locationList.Add(locationCity);
           }

        this.LocationComboBox.DataSource = locationList;

首先,您将获得表示要在此循环迭代中添加的城市名称的字符串。然后,检查并查看List中是否已存在该值。如果不是,那么你添加它;否则,你什么都不做。

答案 2 :(得分:1)

如果您使用.net 3或更高版本,则使用LINQ会更简单:

this.LocationComboBox.DataSource = 
    Data.Manager.TAM.RepListViewTableAdapter.GetData().
    Select(r => r.Location_City).Distinct().ToArray();