IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[c#] comment rechercher une objet dans une LIST<>?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut [c#] comment rechercher une objet dans une LIST<>?
    Bonjour tlm,
    j'ai une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        public class assiette
        {
            public int numero_assiette;
            public int quantite;
            public string nom;
            public int type;
     
        }
    // je cree une liste d'assiette
     static public List<assiette> LAssietteStock = new List<assiette>();
    // j'ajoute des assiette dans la liste
                    assiette uneAssiette = new assiette();
                    uneAssiette.nom = "Crevette";
                    uneAssiette.numero_assiette =1;
                    uneAssiette.quantite = 2;
                    uneAssiette.type = 1;
    Ma question est dans la liste comment je peux retrouver l'assiette avec nom = "crevette" en utilisant les mehtodes de recheche dans l'objet LIST<>

    j'ai vu une methode "Find" mais j'ai pas compris comment l'utiliser


    Merci d'avance pour l'aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Par défaut
    Tu as 2 solutions, la 1er avec Find() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class assiette
    {
    	public int numero_assiette;
    	public int quantite;
    	public string nom;
    	public int type;
     
    }
     
    private bool PredicatDeRecherche(assiette a)
    {
    	if (a.nom == "crevette")
    		return true;
    	return false;
    }
     
    // je cree une liste d'assiette
     static public List<assiette> LAssietteStock = new List<assiette>();
    // j'ajoute des assiette dans la liste
    assiette uneAssiette = new assiette();
    uneAssiette.nom = "Crevette";
    uneAssiette.numero_assiette =1;
    uneAssiette.quantite = 2;
    uneAssiette.type = 1;
     
    LAssietteStock.Add(uneAssiette);
     
    assiette assietteCrevette = LAssietteStock.Find(PredicatDeRecherche);
    La 2eme serait de passer par un Enumerator :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    IEnumerator TonEnumerator = LAssietteStock.GetEnumerator();
    while(TonEnumerator.MoveNext())
    {
    	if(TonEnumerator.Current.nom == "crevette")
    		assiettecrevette = TonEnumerator.Current ;
    }

  3. #3
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Assiette assiette = MesAssiettes.Find(delegate(Assiette match)
    { return (match.Nom == "Crevette") ;})
    MesAssiettes = List<Assiette>

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    merci bcp, ca marche nikel ^^

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Pour le fun, la version LINQ :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Assiette monAssiete = LAssietteStock.First(a => a.nom == "Crevette");
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 2
    Par défaut
    En reprenant l'exemple de lykim1982, je voudrais moi utiliser la méthode Find d'une List avec utilisation d'un prédicat, mais dont le critère n'est pas une constante "crevette", mais une variable (que j'ai appellée ici leNomRecherche).

    Comment faire SVP pour lier nomAssiette à LeNomRecherche ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private bool PredicatDeRecherche(assiette a)
    {
    	if (a.nom == leNomRecherche)
    		return true;
    	return false;
    }
     
     
    public Assiette FournirAssietteSelonNom(String nomAssiette)
    {
    	Assiette assiette = LAssietteStock.Find(PredicatDeRecherche);
            return assiette;
    }

  7. #7
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private bool PredicatDeRecherche(assiette a)
    {
    	return a.nom == "crevette";
    }


    Je crois qu'avec une methode anonyme c'est plus souple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    assiette assietteCrevette = LAssietteStock.Find(delegate(assiette a) { return a.nom == "crevette"; });
    bien sur si on doit faire la recherche beaucoup de fois a des places differentes dans le code c'est mieux d'utiliser la methode PredicatDeRecherche

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 71
    Par défaut
    oui c vrai je suis d'accord

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  2. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  3. Réponses: 4
    Dernier message: 19/06/2007, 10h41
  4. Réponses: 8
    Dernier message: 16/02/2007, 15h55
  5. Réponses: 7
    Dernier message: 21/08/2006, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo