Langage C# – Fusion de listes imbriquées dans une grappe d’objets

Dans cet article, nous allons voir comment obtenir facilement une fusion de listes imbriquées dans une grappe d’objets, en utilisant la méthode SelectMany sur les collections génériques. Pour illustrer cela de manière concrète, voici un exemple dans lequel deux personnes ont tiré au sort des listes de nombres, l’objectif étant d’obtenir l’ensemble des tirages toutes personnes confondues :

Voici l’implémentation de la classe Personne :

public class Personne
{

    public string Nom { get; set; }
    public string Prenom { get; set; }
    public List<List<int>> ListeTirages { get; set; }

    public Personne(string nom, string prenom, List<List<int>> listeTirages)
    {
        this.Nom = nom;
        this.Prenom = prenom;
        this.ListeTirages = listeTirages;
    }
}

Voici le code permettant de créer la grappe d’objets présentée ci-dessus :

List<Personne> oListePersonnes = new List<Personne>()
{
    new Personne("VIRET", "Jean", new List<List<int>>()
    {
        new List<int>() {1, 3, 10},
        new List<int>() {5, 7, 15}
    }),
    new Personne("ATEA", "Julien", new List<List<int>>()
    {
        new List<int>() {2, 5, 11},
        new List<int>() {5, 8, 14},
        new List<int>() {3, 6, 15}
    })
};

Pour obtenir l’ensemble des tirages dans une collection :

List<List<int>> oListe = oListePersonnes.SelectMany(o => o.ListeTirages).ToList();

L’expression lambda o => o.ListeTirages désigne la propriété contenant les objets qui constitueront la nouvelle collection d’objets retournée par la méthode SelectMany.

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j’alterne les missions de formation et d’ingénierie avec cette plateforme. J’écris ce blog pour transmettre mes connaissances à tout développeur, qu’il soit débutant ou expérimenté.