2010-11-11 4 views
0

Je remplis dynamiquement une zone de liste déroulante winforms en créant une liste à partir d'une base de données.Vérifiez si l'élément est dans une liste de zones de liste déroulante

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; 

La question que j'ai est qu'il ya actuellement un total de 3 emplacements, mais 65 employés pour ce qui se passe est que je reçois des villes répétées dans la zone de liste déroulante. Comment puis-je modifier ceci pour vérifier si la nouvelle Location_City n'est pas déjà présente dans locationList? Si ce n'est pas le cas, ajoutez-le, mais si c'est le cas, ignorez-le.

Toute aide serait géniale.

Répondre

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

locationList est de type List, qui implémente IList. Par conséquent, vous pouvez utiliser la méthode Contient pour vérifier si un élément est déjà présent.

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

En outre, vous pouvez également utiliser un HashSet au lieu d'une liste et d'utiliser sa méthode Distinct().

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

+0

Vous pouvez également utiliser HashSet; voir mon edit. –

1

Modifier votre code pour inclure le contrôle suivant:

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; 

D'abord, vous obtenez la chaîne qui représente le nom de la ville que vous souhaitez ajouter à cette itération de la boucle. Ensuite, vous vérifiez et voir si cette valeur est déjà présente dans le List. Si ce n'est pas le cas, alors vous l'ajoutez; sinon, tu ne fais rien.

1

Si vous utilisez .net 3 ou plus, il est beaucoup plus simple à utiliser LINQ:

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