Teste si un champ est identique dans une liste d'objet
gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention 8 octobre 2008
-
19 janv. 2008 à 13:21
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
19 janv. 2008 à 21:09
Bonjour,
j'ai une list de TextBox (List<TextBox>) et je voudrais faire un test pour vérifier si l'un des champs Text de cette liste de TextBox est identique.
sachant que les autres champs comme Name, Location, ... sont différents ou non (c'est à dire que le test est dépendant que du champ Text et non des autres champ)
exemple:
List<TextBox> MesTextBoxs= new List<TextBox>();
MesTextBoxs[0].Text = "azerty";
MesTextBoxs[1].Text = "qwery";
MesTextBoxs[2].Text = "alzheimer";
MesTextBoxs[3].Text = "il fait beau";
MesTextBoxs[4].Text = "il fait beau";
on veut tester si dans la liste MesTextBoxs, il y a 2 TextBoxs qui ont le champ Text identique (dans le cas présent : "il faut beau")
et donc il affiche "il existe une textbox avec un valeur texte déjà existant";
Est ce que vous auriez une idée ? autre que la méthode avec les boucles comme suit :
for(int i = 0; i < MesTextBox.Count; i++)
for(int j = 0; j < MesTextBox.Count; j++)
if ((i != j) && (MesTextBox[i].Text.Equals(MesTextBox[j].Text)))
{
Message.Box("Mon Message");
return;
}
A voir également:
Teste si un champ est identique dans une liste d'objet
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 19 janv. 2008 à 16:03
Salut,
Tu peux regarder du côté des méthodes Exists/Find/etc, mais si ton but est d'empêcher les doublons, tu as plutot intérêt à t'orienter vers le développement d'une classe de collection où le code de la méthode Add gérera le test.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 janv. 2008 à 21:09
De toute façon, il faut comparer chaque élément avec les autres (impossible de faire plus rapide!)
Par contre, prendre l'élément 1 avec 2, et 2 avec 1, c'est inutile (2x trop de testes, au moins!).
On peut donc environ doubler la vitesse en faisant comme ceci:
for (
int i = 0; i < tBoxCol.Count - 2 ; i++)
{
for (
int j = i+1; j < tBoxCol.Count - 1; j++)
{
if (tBoxCol[i].Text == tBoxCol[j].Text)
MessageBox.Show(
"!");
}
}