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 :

Sous-ensemble d'une collection


Sujet :

VB.NET

  1. #1
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut Sous-ensemble d'une collection
    Bonjour,

    Est-il possible de créer une collection qui soit un sous-ensemble d'une autre collection sans passer par une boucle?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir Alain,

    LINQ permet de faire cela (relativement) facilement et travail directement avec les propriétés des objets contenu dans la collection.
    C'est vraiment fascinent à découvrir.

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Merci beaucoup.

    J'ai commencé à explorer mais je tombe sur un problème.
    Dans cet exemple (très simplifié, pas de clause Where) de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim UneCollectionDobjets As Collection
    Dim SubCollection = From Col In m_colCollections Select Col
    UneCollectionDobjets = SubCollection
    pas de problème pour obtenir SubCollection mais visiblement SubCollection n'est pas du même type que UneCollectionDobjets.

    Comment assigner SubCollection (le résultat du Linq) à UneCollectionDobjet?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    si m_colCollections et UneCollectionDobjets on le même type de base
    exemple List<obj> et array<obj> la tu peux utiliser juste la fonction Tolist
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UneCollectionDobjets = SubCollection.ToList()
    sinon tu peux sélectionner le résultat et la formate comme tu veux avec exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim x = From it in SomeCollection Select New Student With { .Name = it.Name }

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    J'espérais que tous mes types étaient clairs.
    UneCollectionDobjets est, comme son nom l'indique ainsi que sa déclaration, une Collection destinée à recevoir un sous-ensemble de la Collection m_colCollections.

    m_colCollections (je sais que le nom peut paraître ambigu mais pas pour moi...) est une Collection d'objets issus d'une Classe (clsCollection).

    SubCollection est le résultat renvoyé par Linq et semble ne pas être une Collection mais une List.

    Donc ta phrase
    si m_colCollections et UneCollectionDobjets ont le même type de base
    me fait croire que tu n'as pas compris mon problème puisque, justement, je constate que le type n'est pas le même.

    Peut-être que je dois changer mes "As Collection" en "As List(Of clsCollection)"...???
    Collection serait-il un reliquat de Visual Basic(6) laissé dans VB DOT.NET pour compatibilité?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Je ne connais pas VB, je suppose que Collection est du .NET 1.x., donc non générique. Collection<T> est la version générique (depuis .NET 2.0). Linq renvoie du générique, qui ne peut être assigné à une version non générique.

    Tout ça pour dire que tu devrais effectivement essayer avec As List(Of clsCollection) Mais alors ajoute un "ToList" à la fin (ou alors crée ta variable comme un IEnumerable<T>), car Select retourne un IEnumerable<T>

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    (ou alors crée ta variable comme un IEnumerable<T>), car Select retourne un IEnumerable<T>
    Je te remercie beaucoup mais, désolé pour mon manque de connaissance, je ne sais pas comment faire.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Ce doit être genre :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim UneCollectionDobjets As IEnumerable(Of T)

    Ou T est le type d'objet qui se trouve dans la collection m_colCollections.
    Exemple
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim UneCollectionDobjets As IEnumerable(Of string)

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Grand merci.

    J'ai déjà testé le List(Of T) (je viens de comprendre ce que veut dire le T) et ça m'a l'air de mieux se comporter que les Collections.

    Pour la suite, je n'ai pas le temps d'approfondir dans l'immédiat. Je m'en suis sorti avec une boucle en attendant mieux.

    Dès que j'en ai fini avec l'application en cours, promis je m'y plonge.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Et cela rejoint ce que je t'explique dans ta discussion : Remplacer modules standards par modules de classe

    On déclare une variable de type IEnumerable(Of T) dans laquelle on peut mettre n'importe quelle objet qui implémenterait cette interface, donc une bonne partie des collections générique comme List(Of T) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Declaration
    <SerializableAttribute> _
    Public Class List(Of T) _
    	Implements IList(Of T), ICollection(Of T),  _
    	IList, ICollection, IReadOnlyList(Of T), IReadOnlyCollection(Of T),  _
    	IEnumerable(Of T), IEnumerable

Discussions similaires

  1. sous ensemble dans une liste
    Par philippe6 dans le forum Débuter avec Java
    Réponses: 26
    Dernier message: 18/03/2013, 15h42
  2. Prendre un sous-ensemble d'une matrice
    Par timpoi dans le forum C
    Réponses: 12
    Dernier message: 14/02/2011, 10h57
  3. [DLL] Extraire un sous-ensemble d'une application
    Par DSGSLA dans le forum Windows
    Réponses: 9
    Dernier message: 23/03/2010, 09h28
  4. [LINQ To Object] Sous-ensemble d'une liste
    Par farfadet dans le forum Linq
    Réponses: 6
    Dernier message: 17/11/2008, 23h31
  5. sous ensemble d'une liste
    Par adel25 dans le forum C++
    Réponses: 1
    Dernier message: 23/08/2005, 15h50

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