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

Windows Forms Discussion :

[VB.NET] List(Of et la function Find


Sujet :

Windows Forms

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut [VB.NET] List(Of et la function Find
    Bonjour,

    J'ai du mal à comprend le fonctionnement des "Predicate"

    En simplifiant voici ce que j'ai

    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
     
    Public Class Employes
        Public ListEmploye As New List(Of Employe)
    End Class
     
     
    Public Class Employe
        Public ID As String = ""
        Public Nom As String = ""
        Public Prenom As String = ""
     
        Public Sub New(ByVal UnID, ByVal UnNom, ByVal UnPrenom)
            ID = UnID
            Nom = UnNom
            Prenom = UnPrenom
        End Sub
     
        Public Overrides Function ToString() As String
            Return Prenom & " " & Nom
        End Function
    End Class
    Avec la function Find dans la class Employes je voudrais retrouver l'employe "TOTO"

    mais je comprend rien avec leur Predicate

    merci

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Un prédicat dans ce cas, c'est une fonction qui prends un argument de type T et qui retourne Vrai ou faux. Pour reprendre ton exemple je peux écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim MaListe As New Employes
            MaListe.ListEmploye.Add(New Employe("1", "nom1", "prenom1"))
            MaListe.ListEmploye.Add(New Employe("2", "nom2", "prenom2"))
            MaListe.ListEmploye.Add(New Employe("2", "TOTO", "prenom3"))
            Dim ChercheEmploye As Employe
            ChercheEmploye = MaListe.ListEmploye.Find(AddressOf ParNom)
            If Not ChercheEmploye Is Nothing Then MsgBox(ChercheEmploye.ToString)
        End Sub
     
        Private Shared Function ParNom(ByVal LeNom As Employe) As Boolean
            If LeNom.Nom = "TOTO" Then Return True Else Return False
        End Function
    dans ce cas, c'est la fonction ParNom qui est mon prédicat pour le find

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    Génial ça marche, par contre est ce que l'on peut mettre à la place de "toto" mettre une variable. je l'indique comment ?
    j'ai essayé de mettre une variable mais il ne veut pas que je passse une variable au moment de l'appel de la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Shared Function ParNom(ByVal LeNom As Employe, ByVal  uneVariable as string) As Boolean
            'If LeNom.Nom = "TOTO" Then Return True Else Return False
             If LeNom.Nom = UneVariable Then Return True Else Return False
     
    End Function

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    j'ai rajouté une variable public ValeurChercher dans ma class Employés.

    Je la renseigne avant d'utiliser le find

    Du coup je retombe sur un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Shared Function ParNom(ByVal LeNom As Employe) As Boolean
       If LeNom.Nom = ValeurChercher Then Return True Else Return False
    End Function
    mais je ne trouve pas ça très propre, il y a surement un autre moyen

  5. #5
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    non, tu ne peux pas passer un argument supplémentaire dans la fonction du prédicat. Par contre si tu ne met pas la fonction comme Shared tu peux utiliser une variable globale, par exemple :
    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
     
        Private NomCherche As String
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim MaListe As New Employes
            MaListe.ListEmploye.Add(New Employe("1", "nom1", "prenom1"))
            MaListe.ListEmploye.Add(New Employe("2", "nom2", "prenom2"))
            MaListe.ListEmploye.Add(New Employe("2", "TOTO", "prenom3"))
            Dim ChercheEmploye As Employe
            NomCherche = "TOTO"
            ChercheEmploye = MaListe.ListEmploye.Find(AddressOf ParNom)
            If Not ChercheEmploye Is Nothing Then MsgBox(ChercheEmploye.ToString)
        End Sub
     
        Private Function ParNom(ByVal LeNom As Employe) As Boolean
            If LeNom.Nom = NomCherche Then Return True Else Return False
        End Function

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    OK,

    un gros merci pour toi bidou

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

Discussions similaires

  1. [VB.NET] Liste des Références d'un projet
    Par olbi dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/05/2007, 17h03
  2. [ASP.NET] Liste de boutons radio
    Par hdd dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/02/2007, 10h50
  3. [Access & ADO.Net] Liste de choix
    Par oodini dans le forum Access
    Réponses: 12
    Dernier message: 24/06/2006, 17h57
  4. [VB.NET] Listing d'un répertoire par FTP avec API
    Par joefou dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/12/2005, 15h29
  5. [VB.NET] Liste composant
    Par borgfabr dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2005, 18h09

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