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 :

Group by linq


Sujet :

Linq

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut Group by linq
    Bonsoir,

    voila je récupère de ma bdd une liste de donneses de ce type.

    poste | Famille. | Composant
    Pxpx1. Quint. Cpt 1
    Pxpx1. Hyuhy Cpt 2
    Pxpx1. Hyuhy Cpt 3
    Tpst2. Porta. Cpt44
    Tpst3. Porta. Cpt45
    Pkret. Médis. Cpt59


    Toutes ces donnés sont stockées dans un objet liste<test>.
    Je souhaiterai en utilisant linq transformer cela dans un objet :
    List<poste> Ou poste contient :
    --> nom
    --> list<famille> ou famille contient :
    --> descfamille
    --> list<composant> ou composant contient des infos liées à son objet

    Mes classes poste famille et composant sont créée.
    Je souhaiterais faire des group by pour obtenir mon résultat.
    Du genre
    List<poste> Lstposte = liste<test>.groupby.........


    Merci

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Quelques choses comme ceci ?
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace LinqGroupBy
    {
        class RawData
        {
            public string poste;
            public string famille;
            public string composant;
        }
     
        class Poste
        {
            public string nom;
            public List<Famille> familles;
        }
     
        class Famille
        {
            public string desc;
            public List<Composant> composants;
        }
     
        class Composant
        {
            public string nom;
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                RawData[] data = new RawData[]
                {
                    new RawData() { poste = "Pxpx1.", famille = "Quint.", composant ="Cpt 1" },
                    new RawData() { poste = "Pxpx1.", famille = "Hyuhy", composant ="Cpt 2" },
                    new RawData() { poste = "Pxpx1.", famille = "Hyuhy", composant ="Cpt 3" },
                    new RawData() { poste = "Tpst2.", famille = "Porta.", composant ="Cpt44" },
                    new RawData() { poste = "Tpst3.", famille = "Porta.", composant ="Cpt45" },
                    new RawData() { poste = "Pkret.", famille = "Médis.", composant = "Cpt59" }
                };
     
                List<Poste> liste = (from p in 
                                     (
                                        from f in data
                                        group new Composant() { nom = f.composant } by new { f.poste, f.famille } into g
                                        select new { poste = g.Key.poste, famille = g.Key.famille, composants = g.ToList() }
                                     ) 
                                     group new Famille() { desc = p.famille, composants = p.composants } by p.poste into g2
                                     select new Poste() {  nom = g2.Key, familles = g2.ToList()}
                               ).ToList();            
            }
        }
    }
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

Discussions similaires

  1. Group By Linq (Entities) Lambda
    Par kimausoleil dans le forum Linq
    Réponses: 6
    Dernier message: 14/09/2012, 12h35
  2. [Linq 4] Group Join avec multiples join
    Par CUCARACHA dans le forum Linq
    Réponses: 0
    Dernier message: 05/05/2011, 15h07
  3. Requete group by et LinQ
    Par Wiink dans le forum Linq
    Réponses: 13
    Dernier message: 25/09/2010, 12h54
  4. Comment utilisez Group By et Sum en Linq
    Par randriano dans le forum Linq
    Réponses: 14
    Dernier message: 02/06/2010, 16h37
  5. Requête linq group by et order by
    Par LebronPA dans le forum Linq
    Réponses: 0
    Dernier message: 03/06/2009, 10h44

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