代码之家  ›  专栏  ›  技术社区  ›  Taryn Frank Pearson

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

  •  0
  • Taryn Frank Pearson  · 技术社区  · 14 年前

    我正在通过从数据库创建列表来动态填充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名员工,所以现在的情况是,我在组合框中重复了城市。如何编辑以上内容以检查位置列表中是否已不存在新的位置城市?如果不存在,则添加它;如果存在,则跳过它。

    任何帮助都很好。

    3 回复  |  直到 12 年前
        1
  •  2
  •   Evan Mulawski    14 年前
    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

    此外,还可以使用哈希集而不是列表,并使用其Distinct()方法。

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

        2
  •  1
  •   Cody Gray    14 年前

    更改代码以包括以下检查:

    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 . 如果不是,则添加;否则,则不执行任何操作。

        3
  •  1
  •   arbiter    14 年前

    如果您使用的是.net 3或更高版本,则使用LINQ要简单得多:

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