我通过从数据库创建列表来动态填充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?如果不存在,则添加它,但如果存在,则跳过它。
任何帮助都会很棒。
答案 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()方法。
答案 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();