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

C# Discussion :

Imbriquer un Foreach dans un autre


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Imbriquer un Foreach dans un autre
    Bonjour,

    Question sans doute bête, mais vous arrive t il souvent d'imbriquer un foreach dans un autre ?

    Je trouve cela pratique dans certains cas (notamment pour comparer 2 XCollection).

    Mais existe il des alternatives ? Des façons d'optimiser ?

    Merci d'avance,

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Par défaut
    Souvent non, à chaque fois que possible oui. Il y a des moyens de l'éviter (notamment avec LINQ), mais ça sera souvent au final qu'un moyen détourner de faire deux boucles imbriquées. En bref, le tout est de toujours choisir le meilleur compromis entre temps d'écriture/maintenabilité/performance.

  3. #3
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Linq
    Après tout dépend de ce que tu veux faire.

    Un exemple serait d'avoir 2 listes de string et tu voudrais récupérer les string qui sont communs aux deux listes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<string> strs1 = new List<string>() { "1", "2", "3" };
    List<string> strs2 = new List<string>() { "0", "2", "3", "4" };
     
    var result = strs1.Intersect(strs2);
     
    foreach (var item in result)
    {
        Console.WriteLine(item);
    }
    Ce n'est qu'un exemple parmi des centaines de possibilités d'utilisation.
    Si tu as des questions précises, n'hésite pas.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    Personnellement, je n'aime pas Linq pour les performances. Je te conseille de rester avec tes 2 foreach. Si tu recherches sur le Net quelques benchmark entre Linq et foreach bien programmé c'est épeurant la différence. J'ai déjà expérimenté plusieurs fois et généralement je prends mes bons vieux foreach pour ce genre de comparaison.

    Oublie pas que tu peux utiliser l'instruction break; dans un foreach ça gagne beaucoup de performance si tu cherches pas exemple le 1er index semblable.

    Bonne chance.

  5. #5
    Membre averti
    Profil pro
    Coach Agile
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Citation Envoyé par girouxv Voir le message
    Personnellement, je n'aime pas Linq pour les performances.
    C'est bizarre, moi, c'est le contraire, j'aime LinQ pour les performances, j'ai eu le cas d'utilisation dans un programme en travaillant sur du JSON à passer en Objet de plus de 50 champs dans la classe, et je passais de plus de 30 secondes en classique avec un foreach à moins de 2 secondes avec LinQ

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par girouxv Voir le message
    Oublie pas que tu peux utiliser l'instruction break; dans un foreach ça gagne beaucoup de performance si tu cherches pas exemple le 1er index semblable.
    Les méthodes First, SingleOrDefault, etc ... de LINQ ont sans doute été incluses pour faire joli.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/02/2015, 10h38
  2. Supprimer des balises HTML imbriquées les une dans les autres
    Par Ceubex dans le forum Général Java
    Réponses: 5
    Dernier message: 07/09/2012, 11h03
  3. Imbriquer une recherche dans une autre
    Par scons dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/12/2010, 20h50
  4. instructions TYPE imbriquées les unes dans les autres
    Par Beralienne dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2008, 16h15
  5. Imbriquer une méthode dans une autre façon php
    Par titpuce dans le forum Langage
    Réponses: 6
    Dernier message: 09/10/2006, 10h56

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