Syntaxe de la méthode Find

Twetty56 Messages postés 12 Date d'inscription samedi 18 octobre 2003 Statut Membre Dernière intervention 8 mars 2013 - 23 sept. 2011 à 08:38
Twetty56 Messages postés 12 Date d'inscription samedi 18 octobre 2003 Statut Membre Dernière intervention 8 mars 2013 - 27 sept. 2011 à 23:06
Twetty56[blue]


Bonjour

Voici la commande en C# que je veux utiliser en VB.NET

ApplicationGroup applicationGroup applicationGroups.ApplicationGroup.Find(app> app.Type == "Accounting");

Il s'agit de rechercher les occurence dans trois classe qui récupére les données 'un fichier XML a deux niveaux

1 classe ApplicationGroups qui contient la groupe d'application dans le fichier
1 classe ApplicationGroup représentant un groupe d'application avec une propriété Type
1 classe Application contenant les propriété de l'application

Je cherche donc toutes les appliocation pour un type donné

Et je ne parvient pas à déclarer dans la méthode find ma recherche

Merci d'avance

4 réponses

Utilisateur anonyme
26 sept. 2011 à 20:10
Bonsoir,

Si tu veux récupérer toutes les occurences, tu devra utiliser FindAll :
ApplicationGroup = ApplicationGroups.ApplicationGroup.FindAll(AddressOf ChercheType)


Et sa fonction appelée :
Private Function ChercheType(ByVal Item As Application) As Boolean
    If Item.Type = "Accounting" Then Return True Else Return False
End Function


Bonne soirée.
0
Twetty56 Messages postés 12 Date d'inscription samedi 18 octobre 2003 Statut Membre Dernière intervention 8 mars 2013
26 sept. 2011 à 23:19
Twetty56[blue]

Bonsoir Banana32

Je te remercie de ta réponse

je viens de la tester

Mais comme j'ai déjà fait de nombreuse recherche sur les Predicate et tenté différente implémentation mais rien n'y fait

Le probleme est certainement du à la fonction suivante

/// <summary>
/// Définit l'égalité entre le produit courant et celui passé en paramètre
/// </summary>
/// le produit à comparer


/// <returns>Retourne le résultat de l'égalité</returns>
public override bool Equals(object obj)
{
if (obj == null)
return false;
Application app = obj as Application;
if (app == null)
return false;
return (this.Id app.Id && this.Version app.Version);
}

Que j'ai réécrit en VB de la facon suivante

''' <summary>
''' Définit l'égalité entre le produit courant et celui passé en paramètre
''' </summary>
''' le produit à comparer


''' <returns>Retourne le résultat de l'égalité</returns>
Public Overloads Overrides Function Equals(ByVal obj As Object) As Boolean

If obj Is Nothing Then

Return False

End If

Dim app As Application = obj

If app Is Nothing Then

Return False

End If

Return (Me.Id app.Id AndAlso Me.Version app.Version)

Elle se situe dans la classe Application

Alors que la propriété type est dans la classe parent ApplicationGroup

Et la je seche

Merci encore
0
Utilisateur anonyme
27 sept. 2011 à 20:49
J'imagine que ton xml doit être grosso modo de cette forme :

  
    <Type>Accounting</Type>
    
      <Nom>app1</Nom>
      0
    
    
      <Nom>app2</Nom>
      1
    
  
  
    <Type>Blablabla</Type>
    
       <Nom>app3</Nom>
       0
    
    
       <Nom>app4</Nom>
       1
    
    
       <Nom>app5</Nom>
       2
    
  

 


Je cherche donc toutes les appliocation pour un type donné

On cherche donc toutes les applications regroupées dans un seul ApplicationGroup puisque tu écris :
Alors que la propriété type est dans la classe parent ApplicationGroup


Il te suffit donc d'énumérer les ApplicationGroup plutôt que les applications et de chercher le type "accounting".
Lorsque tu l'as trouvé, toutes les applications qui sont dans ce groupe auront le même Type.
ApplicationGroups.FindAll(AddressOf ...)


Private Function ... (ByVal Item As ApplicationGroup) As Boolean
    If Item.Type = "Accounting" Then Return True Else Return False
End Function



Sers toi de la coloration syntaxique pour poster des exemples de code. C'est la 3eme icône en partant de la droite. merci

Bonne soirée.
0
Twetty56 Messages postés 12 Date d'inscription samedi 18 octobre 2003 Statut Membre Dernière intervention 8 mars 2013
27 sept. 2011 à 23:06
Twetty56[blue]

Bonsoir Banana32

Tu as effectivement raison

la structure du fichier est bien celle la

Je testerais ta solution et je t'enverrai le résultat

En attendant et comme j'étais bloqué j'ai opté par une solution intégrant les classe C# et les classe VB

Et maintenant cela marche

Merci encore
0