2010-11-11 70 views
0

我通过从数据库创建列表动态填充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中?如果它不在那里,然后添加它,但如果它在那里,则跳过它。

任何帮助将是伟大的。

回答

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

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

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

此外,你也可以使用一个HashSet,而不是列表,并使用其独特的()方法。

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

+0

您还可以使用HashSet的;看我的编辑。 – 2010-11-11 14:46:34

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中是否已经存在该值。如果不是,那么你加上它;否则,你什么都不做。

1

如果您使用的是.NET 3或更高它是非常容易使用LINQ:

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