Jusque là, quand je voulais vérifier la présence d'un élément dans un
tableau, je parcourais le tableau jusqu'à trouver ou non cet élément.
Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la
méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai
fais ça:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yanos El Guerilleros
Salut,
Personnellement pour une simple recherche je me contente de faire un foreach sur chaque élément.
L'intérêt (à mon humble avis) d'utiliser les méthodes basées sur un prédicat est quand : - tu utilises plusieurs de ces méthodes avec les mêmes conditions (s'enquiquiner à refaire la boucle à chaque fois n'est pas forcément utile) - tu as plusieurs prédicats possibles en fonction du contexte - ou tout simplement tu n'as pas envie de faire des boucles ;)
Dans ton cas tu n'as pas beaucoup d'autres choix en effet que de remplir des champs privés pour exécuter ton prédicat, perso dans un tel cas je ferais directement ma boucle dans une méthode (sauf si je dois réutiliser cette condition dans d'autres méthodes Array ).
A++
Yanos
J-L a écrit :
Bonjour,
Jusque là, quand je voulais vérifier la présence d'un élément dans un tableau, je parcourais le tableau jusqu'à trouver ou non cet élément. Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai fais ça:
L'exemple Microsoft part d'un élément fixe à rechercher dans le tableau, cet élément étant "hard-code" dans le prédicat.
Je n'ai pas trouvé d'autre solution que celle ci-dessus pour utiliser la méthode avec un élément dynamique au moment de la recherche.
Encore une fois, je me dis qu'il y a surement beaucoup mieux.
Votre avis svp ?
J-L
Salut,
Personnellement pour une simple recherche je me contente de faire un
foreach sur chaque élément.
L'intérêt (à mon humble avis) d'utiliser les méthodes basées sur un
prédicat est quand :
- tu utilises plusieurs de ces méthodes avec les mêmes conditions
(s'enquiquiner à refaire la boucle à chaque fois n'est pas forcément utile)
- tu as plusieurs prédicats possibles en fonction du contexte
- ou tout simplement tu n'as pas envie de faire des boucles ;)
Dans ton cas tu n'as pas beaucoup d'autres choix en effet que de remplir
des champs privés pour exécuter ton prédicat, perso dans un tel cas je
ferais directement ma boucle dans une méthode (sauf si je dois
réutiliser cette condition dans d'autres méthodes Array ).
A++
Yanos
J-L a écrit :
Bonjour,
Jusque là, quand je voulais vérifier la présence d'un élément dans un
tableau, je parcourais le tableau jusqu'à trouver ou non cet élément.
Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la
méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai
fais ça:
Personnellement pour une simple recherche je me contente de faire un foreach sur chaque élément.
L'intérêt (à mon humble avis) d'utiliser les méthodes basées sur un prédicat est quand : - tu utilises plusieurs de ces méthodes avec les mêmes conditions (s'enquiquiner à refaire la boucle à chaque fois n'est pas forcément utile) - tu as plusieurs prédicats possibles en fonction du contexte - ou tout simplement tu n'as pas envie de faire des boucles ;)
Dans ton cas tu n'as pas beaucoup d'autres choix en effet que de remplir des champs privés pour exécuter ton prédicat, perso dans un tel cas je ferais directement ma boucle dans une méthode (sauf si je dois réutiliser cette condition dans d'autres méthodes Array ).
A++
Yanos
J-L a écrit :
Bonjour,
Jusque là, quand je voulais vérifier la présence d'un élément dans un tableau, je parcourais le tableau jusqu'à trouver ou non cet élément. Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai fais ça:
L'exemple Microsoft part d'un élément fixe à rechercher dans le tableau, cet élément étant "hard-code" dans le prédicat.
Je n'ai pas trouvé d'autre solution que celle ci-dessus pour utiliser la méthode avec un élément dynamique au moment de la recherche.
Encore une fois, je me dis qu'il y a surement beaucoup mieux.
Votre avis svp ?
J-L
Agnain
J-L a écrit :
Bonjour,
Jusque là, quand je voulais vérifier la présence d'un élément dans un tableau, je parcourais le tableau jusqu'à trouver ou non cet élément. Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai fais ça:
Jusque là, quand je voulais vérifier la présence d'un élément dans un
tableau, je parcourais le tableau jusqu'à trouver ou non cet élément.
Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la
méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai
fais ça:
Jusque là, quand je voulais vérifier la présence d'un élément dans un tableau, je parcourais le tableau jusqu'à trouver ou non cet élément. Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai fais ça:
Jusque là, quand je voulais vérifier la présence d'un élément dans un tableau, je parcourais le tableau jusqu'à trouver ou non cet élément. Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai fais ça:
// déterminer si une chaine est contenue dans le tableau (LINQ / .NET 3.5) bool mercrediEstBienLa = tablo.Contains("Mercredi"); MessageBox.Show(mercrediEstBienLa ? "Mercredi y est" : "Pas de mercredi");
// utilisation de Array.Find sans fonction prédicat explicite (délégats anonymes, .NET 2.0ff) MessageBox.Show("Chercher jeudi donne " + Array.Find<string>(tablo, delegate(string chaine) { return chaine == "Jeudi"; }));
// trouver les jours de la semaine contenant une lettre "u" ou dont le nom est // plus long que 7 characteres, les trier par longueur, afficher nom et longueur en parentheses // (juste pour montrer que LINQ en vaut vraiment la peine :-) foreach(string resultat in tablo .Where(s => s.Contains("u") || s.Length > 7) .OrderBy(s => s.Length) .Select(s => String.Format("{0} ({1})", s, s.Length))) { MessageBox.Show(resultat); } }
On Wed, 23 Apr 2008 10:01:31 +0200, J-L <alphomega_sansca_@free.fr> wrote:
Jusque là, quand je voulais vérifier la présence d'un élément dans un
tableau, je parcourais le tableau jusqu'à trouver ou non cet élément.
Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la
méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai
fais ça:
// déterminer si une chaine est contenue dans le tableau (LINQ / .NET 3.5)
bool mercrediEstBienLa = tablo.Contains("Mercredi");
MessageBox.Show(mercrediEstBienLa ? "Mercredi y est" : "Pas de mercredi");
// utilisation de Array.Find sans fonction prédicat explicite (délégats anonymes, .NET 2.0ff)
MessageBox.Show("Chercher jeudi donne " +
Array.Find<string>(tablo, delegate(string chaine) { return chaine == "Jeudi"; }));
// trouver les jours de la semaine contenant une lettre "u" ou dont le nom est
// plus long que 7 characteres, les trier par longueur, afficher nom et longueur en parentheses
// (juste pour montrer que LINQ en vaut vraiment la peine :-)
foreach(string resultat in tablo
.Where(s => s.Contains("u") || s.Length > 7)
.OrderBy(s => s.Length)
.Select(s => String.Format("{0} ({1})", s, s.Length)))
{
MessageBox.Show(resultat);
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Jusque là, quand je voulais vérifier la présence d'un élément dans un tableau, je parcourais le tableau jusqu'à trouver ou non cet élément. Pourquoi faire comme ça ? Parce que je n'arrivais pas à utiliser la méthode Array.Find. Là, je me suis penché dessus (sans tomber), et j'ai fais ça:
// déterminer si une chaine est contenue dans le tableau (LINQ / .NET 3.5) bool mercrediEstBienLa = tablo.Contains("Mercredi"); MessageBox.Show(mercrediEstBienLa ? "Mercredi y est" : "Pas de mercredi");
// utilisation de Array.Find sans fonction prédicat explicite (délégats anonymes, .NET 2.0ff) MessageBox.Show("Chercher jeudi donne " + Array.Find<string>(tablo, delegate(string chaine) { return chaine == "Jeudi"; }));
// trouver les jours de la semaine contenant une lettre "u" ou dont le nom est // plus long que 7 characteres, les trier par longueur, afficher nom et longueur en parentheses // (juste pour montrer que LINQ en vaut vraiment la peine :-) foreach(string resultat in tablo .Where(s => s.Contains("u") || s.Length > 7) .OrderBy(s => s.Length) .Select(s => String.Format("{0} ({1})", s, s.Length))) { MessageBox.Show(resultat); } }
La solution de la boucke est celle que j'utilise le plus souvent mais il semble qu'il y est des solutions plus élégantes :) d'après les post ci-dessous
Merci de ton avis sur la question !
-- Jean-Luc M.
Salut yanos,
La solution de la boucke est celle que j'utilise le plus souvent mais
il semble qu'il y est des solutions plus élégantes :) d'après les post
ci-dessous
La solution de la boucke est celle que j'utilise le plus souvent mais il semble qu'il y est des solutions plus élégantes :) d'après les post ci-dessous
A part le type qui manquait, il semble que ce qoit la solution la plus courte. Merci !
-- Jean-Luc M.
Jean-Luc M.
> // déterminer si une chaine est contenue dans le tableau (LINQ / .NET 3.5) bool mercrediEstBienLa = tablo.Contains("Mercredi"); MessageBox.Show(mercrediEstBienLa ? "Mercredi y est" : "Pas de mercredi");
// utilisation de Array.Find sans fonction prédicat explicite (délégats anonymes, .NET 2.0ff) MessageBox.Show("Chercher jeudi donne " + Array.Find<string>(tablo, delegate(string chaine) { return chaine == "Jeudi"; }));
// trouver les jours de la semaine contenant une lettre "u" ou dont le nom est // plus long que 7 characteres, les trier par longueur, afficher nom et longueur en parentheses // (juste pour montrer que LINQ en vaut vraiment la peine :-) foreach(string resultat in tablo .Where(s => s.Contains("u") || s.Length > 7) .OrderBy(s => s.Length) .Select(s => String.Format("{0} ({1})", s, s.Length))) { MessageBox.Show(resultat); } }
Je suis admiratif ... surtout sur le troisième cas. Mais dans mon cas, je dois me limiter à .net 2.0 , malheureusement ... Je retiens tout de même cette élégante façon pour une prochaine application.
Merci également
-- Jean-Luc M.
> // déterminer si une chaine est contenue dans le tableau (LINQ /
.NET 3.5) bool mercrediEstBienLa = tablo.Contains("Mercredi");
MessageBox.Show(mercrediEstBienLa ? "Mercredi y est" : "Pas de
mercredi");
// utilisation de Array.Find sans fonction prédicat explicite
(délégats anonymes, .NET 2.0ff) MessageBox.Show("Chercher jeudi
donne " + Array.Find<string>(tablo, delegate(string chaine) {
return chaine == "Jeudi"; }));
// trouver les jours de la semaine contenant une lettre "u" ou dont
le nom est // plus long que 7 characteres, les trier par longueur,
afficher nom et longueur en parentheses // (juste pour montrer que
LINQ en vaut vraiment la peine :-) foreach(string resultat in tablo
.Where(s => s.Contains("u") || s.Length > 7)
.OrderBy(s => s.Length)
.Select(s => String.Format("{0} ({1})", s, s.Length)))
{
MessageBox.Show(resultat);
}
}
Je suis admiratif ... surtout sur le troisième cas. Mais dans mon cas,
je dois me limiter à .net 2.0 , malheureusement ... Je retiens tout de
même cette élégante façon pour une prochaine application.
> // déterminer si une chaine est contenue dans le tableau (LINQ / .NET 3.5) bool mercrediEstBienLa = tablo.Contains("Mercredi"); MessageBox.Show(mercrediEstBienLa ? "Mercredi y est" : "Pas de mercredi");
// utilisation de Array.Find sans fonction prédicat explicite (délégats anonymes, .NET 2.0ff) MessageBox.Show("Chercher jeudi donne " + Array.Find<string>(tablo, delegate(string chaine) { return chaine == "Jeudi"; }));
// trouver les jours de la semaine contenant une lettre "u" ou dont le nom est // plus long que 7 characteres, les trier par longueur, afficher nom et longueur en parentheses // (juste pour montrer que LINQ en vaut vraiment la peine :-) foreach(string resultat in tablo .Where(s => s.Contains("u") || s.Length > 7) .OrderBy(s => s.Length) .Select(s => String.Format("{0} ({1})", s, s.Length))) { MessageBox.Show(resultat); } }
Je suis admiratif ... surtout sur le troisième cas. Mais dans mon cas, je dois me limiter à .net 2.0 , malheureusement ... Je retiens tout de même cette élégante façon pour une prochaine application.