【问题标题】:Check if item is in a combobox list检查项目是否在组合框列表中
【发布时间】:2010-11-11 14:35:35
【问题描述】:

我通过从数据库创建列表来动态填充 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 名员工,所以发生的事情是我在组合框中重复了城市。如何在上面进行编辑以检查新的 Location_City 是否已存在于 locationList 中?如果不存在,则添加它,但如果存在,则跳过它。

任何帮助都会很棒。

【问题讨论】:

    标签: winforms list combobox


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

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

      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】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-30
          • 1970-01-01
          • 2020-05-03
          • 2010-11-07
          • 2011-09-02
          • 2017-12-21
          • 1970-01-01
          相关资源
          最近更新 更多