Partage
  • Partager sur Facebook
  • Partager sur Twitter

Extraire une liste en fonction d'une autre liste

Les 2 listes doivent contenir une liste commune

    7 janvier 2019 à 18:00:05

    Bonjour,

    tout d'abord, je sais que mon titre n'est pas totalement explicite mais j'avoue que je ne savais pas trop comment le tourner.

    Enfin, voilà toute l'explication :

    Dans une classe, je travaille avec des listes dont voici la description :

    une liste d'objets de type Personne. List<Pays>.

    Chaque objets de type Personne possèdent une liste d'objets Ville. 

    public class Pays
    {
        public List<Ville> listVille
    }



    une liste d'objets de type Personne. List<Personne>.

    Où chaque objects de type Personne possèdent une liste d'object Ville.

    public class Personne
    {
       public List<Ville> listVille
    }



    Dans ma classe principale je travaille avec 2 listes : List<Pays> PaysList et List<Personne> PersonneList.

    Dans un méthode, je dois obtenir tous les éléments de PersonneList qui possède la totalité des éléments de type Ville de la liste Pays.

    C'est pas très clair peut être donc je vais essayer de formaliser cela :

    List<Personne> newList = PersonneList.listVille.equals( tous les éléments de la liste PaysList.listVille);

    J'ai fait un code qui fait le job mais je me demande s'il n'y a pas plus performant.

    Voici le code :

    foreach (Ville ville in PaysList.listVille)
    {
       List<Personne> newListPerson = new List<Personne>(PersonneList);
    
       foreach (Personne person in PersonneList)
       {
           if (!person.listVille.Exists(x => x.name.Equals(ville.name)))
           //name est une propriété de la classe Ville
                newListPerson.remove(person);
       }
       PersonneList = newListPerson;
    }

    Ce n'est bien sûr pas les nom que j'utilise mais ce code reviendrait à obtenir toutes les personnes qui sont allée ou qui ont habitées toutes les villes d'un pays.

    J'utilise pas mal LinqToObject donc si vous avez une écriture qui ferait le travail, je suis preneur.

    merci beaucoup par avance.

    -
    Edité par Nene0412 7 janvier 2019 à 18:37:35

    • Partager sur Facebook
    • Partager sur Twitter
      7 janvier 2019 à 18:11:29

      Utiliser des noms bof ça aide moyen à la compréhension, avec tous ces x, y z…

      Sinon je te suggère de chercher des opérations ensemblistes (subset superset, intersection etc.) Rien qu'avec ces mots clés tu devrais trouver ton bonheur

      • Partager sur Facebook
      • Partager sur Twitter
      Censément, quelqu'un de sensé est censé s'exprimer sensément.
        7 janvier 2019 à 18:39:35

        Merci Sehnsucht, je vais me renseigner de ce côté.

        Suite à ta remarque, j'ai modifier mon premier post avec des noms plus parlant. Enfin j'espère :-).

        Si tu as un code en tête comme solution, je suis preneur.

        merci

        • Partager sur Facebook
        • Partager sur Twitter

        Extraire une liste en fonction d'une autre liste

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown