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

Linq Discussion :

comment valider une condition sur une "sous-collection" ?


Sujet :

Linq

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut comment valider une condition sur une "sous-collection" ?
    Bonjour,
    J'ai une collection "divisions" qui contient des objets "division" défini comme ceci : un champ "code" et une collection "couches".
    Ma collection "couches" contient des objets "couche" ayant un champ "type".
    Actuellement je récupère correctement toutes les divisions qui contiennent le code "01" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    divisions.Where(d => d.code == "01")
    Je veux maintenant toujours récupérer les divisions qui ont le code "01" mais uniquement celles dont leurs couches sont de type "good". J'ai commencé par ça mais j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Divisions.Where(d => d.code == "01" && d.couches.Contains(c => c.type == "good"))
    En effet on se retrouve ici à comparer un booléen avec une collection de couche... Mais je ne vois pas comment faire le lien. Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En fait tu es sur la bonne piste mais Contains ne prend pas en compte un délégué de fonction mais une simple valeur (un objet de type "couche" en l'occurence). Dans ce cas, ça n'irait pas. L'équivalent que tu aurais voulu serait plutôt Any :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    divisions.Where(d => d.code == "01" && d.couches.Any(c => c.type == "good"))
    Mais d'après ce que j'ai compris que tu voulais faire, tu voudrais plutôt les divisions dont TOUTES les couches sont de type "good". Or avec "Any", tu prendrais les divisions dont AU MOINS une couche est de type "good". Pour avoir les divisions dont TOUTES les couches sont de type "good", il faudrait donc plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    divisions.Where(d => d.code == "01" && d.couches.All(c => c.type == "good"))
    La méthode All.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    C'est ça!
    Merci bien.

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

Discussions similaires

  1. [XL-2007] Copie cellule sous condition d'une feuille sur une autre en VBA
    Par Natchway dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/01/2015, 17h12
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. [AC-2003] Comment changer de champs sur une condition
    Par nomade333 dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/10/2009, 09h48
  4. Réponses: 8
    Dernier message: 16/05/2007, 21h16
  5. Réponses: 3
    Dernier message: 03/05/2007, 11h06

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