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

VB.NET Discussion :

Comparer 2 listes


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut Comparer 2 listes
    Bonjour,

    je fait une application de gestion de fichier, et il ya une fonctionnalité qui me pose problème :
    - 1ère liste : liste de sous dossier d'un dossier (rien d'extraordinaire )
    - 2ème liste : liste de sous dossier auquel un quota est appliqué

    Résultat

    Liste des dossiers qui n'ont pas de quotas

    J'aimerais pouvoir faire la différence des 2 listes en gros, mais je ne vois pas trop comment faire (je suis débutant en vb )

    Merci d'avance

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    il faut parcourir les 2 boucles successivements pour regarder si l'élément est contenu dans l'autre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for each elementList1 in List1
      if not List2.contains(elementList1)
    puis l'inverse


    si tu connais linq to object il y a des choses genre List1.intersect(List2) pour avoir les éléments communs ... ce qui diminue le nombre de lignes de codes (mais fait la même chose)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    les 2 listes doivent avoir la même structure de données je suppose ?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    c'est mieux oui, mais si tu détailles le problème, tu auras plus de chances d'avoir des réponses qui sont en accord avec le problème ...

    sinon on part sur des estimations ... et pour moi liste de sous dossier c'est un list(of string) ou éventuellement un list(of directoryinfo) (pour ce dernier cas il faudrait comparer les propriétés indiquant le chemin)

    après si les listes contiennent des chous et des carottes, il faut savoir quoi comparer, si tu veux comparer leur poids c'est faisable
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si tu connais linq to object il y a des choses genre List1.intersect(List2)
    En l'occurrence ce serait plutôt Except que Intersect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dossiersSansQuota = dossiers.Except(dossiersAvecQuota)

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    je me rappelais qu'il y avait intersect c'est déjà ca
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    Bonjour

    En faite la liste des dossiers avec quota risque de me donner d'autres informations (place restante, nom utilisateur dossier, ...) donc je risque de comparé des choux et des carottes

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Bon j'suis une buse en VB. Si y'a quelqu'un qui veut bien convertir de C# à VB.

    Avec les structures suivantes (pour l'exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public struct Folder
    {
    	public String Name {get;set;}
    }
     
    public struct QuotaFolder
    {
    	public String Name {get;set;}
    	public int AnotherInfo {get;set;}
    }
    On peut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var folders = new List<Folder>{ new Folder {Name="Folder1"},new Folder{Name="Folder2"},new Folder{Name="Folder3"}};
    var quotaFolders = new List<QuotaFolder>{ new QuotaFolder {Name="Folder1",AnotherInfo=1},new QuotaFolder{Name="Folder2",AnotherInfo=2}};
     
    var noQuotaFolders = folders.Where(f=> !quotaFolders.Any(qf=>qf.Name==f.Name));
    Edit: EN VB (merci Pol63 )
    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
    30
    31
    32
    Public Structure Folder
    	Public Property Name() As [String]
    		Get
    			Return m_Name
    		End Get
    		Set
    			m_Name = Value
    		End Set
    	End Property
    	Private m_Name As [String]
    End Structure
     
    Public Structure QuotaFolder
    	Public Property Name() As [String]
    		Get
    			Return m_Name
    		End Get
    		Set
    			m_Name = Value
    		End Set
    	End Property
    	Private m_Name As [String]
    	Public Property AnotherInfo() As Integer
    		Get
    			Return m_AnotherInfo
    		End Get
    		Set
    			m_AnotherInfo = Value
    		End Set
    	End Property
    	Private m_AnotherInfo As Integer
    End Structure
    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
    Dim folders = New List(Of Folder)() From { _
    	New Folder() With { _
    		Key .Name = "Folder1" _
    	}, _
    	New Folder() With { _
    		Key .Name = "Folder2" _
    	}, _
    	New Folder() With { _
    		Key .Name = "Folder3" _
    	} _
    }
    Dim quotaFolders = New List(Of QuotaFolder)() From { _
    	New QuotaFolder() With { _
    		Key .Name = "Folder1", _
    		Key .AnotherInfo = 1 _
    	}, _
    	New QuotaFolder() With { _
    		Key .Name = "Folder2", _
    		Key .AnotherInfo = 2 _
    	} _
    }
     
    Dim noQuotaFolders = folders.Where(Function(f) Not quotaFolders.Any(Function(qf) qf.Name = f.Name))

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

Discussions similaires

  1. Comparer deux listes
    Par timtim2007 dans le forum Prolog
    Réponses: 7
    Dernier message: 07/06/2019, 09h02
  2. comparer une liste de valeur
    Par jfcb92 dans le forum Excel
    Réponses: 4
    Dernier message: 14/11/2007, 08h36
  3. Comparer x listes de x serveurs
    Par MaitrePylos dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2007, 09h58
  4. [C# 2.0] Comparer deux listes
    Par Rodie dans le forum Windows Forms
    Réponses: 4
    Dernier message: 01/08/2006, 00h40
  5. Comparer des listes de prix
    Par denisfavre dans le forum Access
    Réponses: 8
    Dernier message: 08/11/2005, 20h11

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