OVH Cloud OVH Cloud

Comment utiliser la fonction FindAll(..) d'une collection generics ?

5 réponses
Avatar
[ Olivier ]
Bonjour

'J'ai une class Personne
Class Personne
Public Nom as string
Public Prenom as string
End Class

'J'ai une collection de Personnes (cPersonnes)
Dim MesPersonnes As New List(Of Personne)

'J'ai rempli la collection : (j'ai simplifié pour faire court..)
MesPersonnes.Add("DURAND", "Paul")
MesPersonnes.Add("DUPONT", "Marc")
etc.. etc..

Comment utiliser la fonction FindAll(..) ?
Par exemple, j'aimerai retrouver toutes les personnes dont le nom est
DUPONT.
C'est quoi le Match ? Predicat ?

[VS 2005]
Merci
Olivier

5 réponses

Avatar
[ Olivier ]
autre problème :

si je rajoute dans ma classe personne une propriété Genre As Integer,
comment toujours avec FindAll, récupérer toutes les personnes qui ont Genre
= 1 ?

Merci toujours

en fait j'aimerai faire kkchose du genre DataView.RowFilter =
"numero_dossier = 1"


Olivier

"[ Olivier ]" a écrit dans le message de news:
%
Bonjour

'J'ai une class Personne
Class Personne
Public Nom as string
Public Prenom as string
End Class

'J'ai une collection de Personnes (cPersonnes)
Dim MesPersonnes As New List(Of Personne)

'J'ai rempli la collection : (j'ai simplifié pour faire court..)
MesPersonnes.Add("DURAND", "Paul")
MesPersonnes.Add("DUPONT", "Marc")
etc.. etc..

Comment utiliser la fonction FindAll(..) ?
Par exemple, j'aimerai retrouver toutes les personnes dont le nom est
DUPONT.
C'est quoi le Match ? Predicat ?

[VS 2005]
Merci
Olivier



Avatar
Titeuf
Salut,
Voici un exemple avec un ArrayList mais le principe est le même avec un
tableau de string ou autre liste
Essais cet exemple ret doit contenir tout les items où ont retrouve "dupond"
dans la collection col

8<----------------------------------------------------
Sub Main()

Dim col As New ArrayList()

col.Add("dupond marc")
col.Add("dupuis lucien")
col.Add("jean dupond")

Dim ret As New ArrayList(Array.FindAll(col.ToArray, AddressOf
FindDupond))

End Sub

Private Function FindDupond(ByVal value As Object) As Boolean

If value Like "*dupond*" Then
Return True
End If

End Function

---------------------------------------------------->8


"[ Olivier ]" a écrit dans le message de news:
%
Bonjour

'J'ai une class Personne
Class Personne
Public Nom as string
Public Prenom as string
End Class

'J'ai une collection de Personnes (cPersonnes)
Dim MesPersonnes As New List(Of Personne)

'J'ai rempli la collection : (j'ai simplifié pour faire court..)
MesPersonnes.Add("DURAND", "Paul")
MesPersonnes.Add("DUPONT", "Marc")
etc.. etc..

Comment utiliser la fonction FindAll(..) ?
Par exemple, j'aimerai retrouver toutes les personnes dont le nom est
DUPONT.
C'est quoi le Match ? Predicat ?

[VS 2005]
Merci
Olivier



Avatar
Titeuf
C# ou vb ???

si c# voici un exemple

using System.Text.RegularExpressions;

static void Main(string[] args)
{
string[] col = new string[] { "dupond marc", "dupuis lucien",
"jean-jacques DUPOND" };

string[] ret = Array.FindAll(col, TestDupond);
}

static bool TestDupond(string value)
{
string word = "dupond";
Match m = Regex.Match(value, word, RegexOptions.IgnoreCase);

if (string.Compare(m.Value, word, true) == 0)
{
return true;
}
else { return false; }
}
Avatar
[ Olivier ]
vb

cool c'est plus simple que je le croyais

merci
olivier


"Titeuf" a écrit dans le message de news:
en%
C# ou vb ???

si c# voici un exemple

using System.Text.RegularExpressions;

static void Main(string[] args)
{
string[] col = new string[] { "dupond marc", "dupuis lucien",
"jean-jacques DUPOND" };

string[] ret = Array.FindAll(col, TestDupond);
}

static bool TestDupond(string value)
{
string word = "dupond";
Match m = Regex.Match(value, word, RegexOptions.IgnoreCase);

if (string.Compare(m.Value, word, true) == 0)
{
return true;
}
else { return false; }
}



Avatar
Sébastien FERRAND [MVP]
essaye ceci :

private static bool NameIsDupont(Personne p) {
return p.Name.Equals("dupont", StringComparaison.CurrentCultureIgnoreCase);
}


List<Personnes> Duponts = personnes.FindAll(NameIsDupont);

--
Sébastien FERRAND (MVP C#)
[http://blogs.developpeur.org/sebmafate]


"[ Olivier ]" a écrit :

Bonjour

'J'ai une class Personne
Class Personne
Public Nom as string
Public Prenom as string
End Class

'J'ai une collection de Personnes (cPersonnes)
Dim MesPersonnes As New List(Of Personne)

'J'ai rempli la collection : (j'ai simplifié pour faire court..)
MesPersonnes.Add("DURAND", "Paul")
MesPersonnes.Add("DUPONT", "Marc")
etc.. etc..

Comment utiliser la fonction FindAll(..) ?
Par exemple, j'aimerai retrouver toutes les personnes dont le nom est
DUPONT.
C'est quoi le Match ? Predicat ?

[VS 2005]
Merci
Olivier