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 :

LINQ to list d'objets


Sujet :

Linq

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 33
    Points : 20
    Points
    20
    Par défaut LINQ to list d'objets
    Bonjour,

    J’ai une liste d'objets sur laquelle je fais une requête LINQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    '---------------numLignes est une liste d'integer
    numLignes.Add(numLigne)
    lstRapport.Add(New Control(societeRef, piece, nombreLigne, nombreAnomalie, numLignes))
    Voici ma liste lstRapport remplie:

    Nom : lstRapport.png
Affichages : 530
Taille : 10,6 Ko

    J’ai fait une requête LINQ qui me retourne le nombre d'anomalie et le nombre de linge par société et par pièce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Dim rapportFinal = From rpt In lstRapport
            Group By rpt.NumPiece, rpt.Societe
            Into mygroup = Group, Count(), Sum(rpt.NombreAnomalie)
    Select New With {.societe = Societe, .piece = NumPiece, .nombreligne = mygroup.Count(), .nombreAno = Sum,
     . ListeNumLigne = ?????????(liste numLigne en anomalie (nombreAnomalie <> 0)) }
    le résultat de ma requête est le suivant:

    Nom : ResultatRequete.png
Affichages : 486
Taille : 11,4 Ko

    Il me manque une colonne ListeNumLigne


    Pouvez-vous m'aider SVP à avoir ce résultat

  2. #2
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Quelqu'un peut m'aider ou me dire si c'est faisable ou non

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    C'est du c# avec les méthodes d'extension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var rapportFinal = lstRapport.
    				GroupBy(l=>new {l.NumPiece,l.Societe}).
    				Select(g=> new {Societe=g.Key.Societe,
    								NumPiece=g.Key.NumPiece,
    								NombreLigne=g.Count(),
    								NombreAno=g.Where(n=>n.NombreAnomalie>0).Sum(n=>n.NombreAnomalie),
    								NumLignes= string.Join(",", g.Where(n=>n.NombreAnomalie>0).Select(ano=>ano.NumLigne.ToString()).ToArray())
    									}).ToList();

  4. #4
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse, j'ai essayer de convertir votre code en VB.net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Dim rapportFinal = lstRapport.
                GroupBy(Function(l) New With {l.NumPiece, l.Societe}).Select(Function(g) New With {.Societe = g.Key.Societe, _
                                                                                                   .NumPiece = g.Key.NumPiece, _
                                                                                                   .nombreLigne = g.Count(), _
                                                                                                   .NombreAno = g.Where(Function(n) n.NombreAnomalie > 0).Sum(Function(n) n.NombreAnomalie), _
                                                                                                                                                              .NumLignes = String.Join _
                                                                                                (",", g.Where(Function(n) n.NombreAnomalie > 0).Select(Function(ano) ano.NumLigne.ToString()).ToArray()) _
                                                                                                  }).ToList()
    Mais le resultat n'est pas bon, il me retourne toute ma liste, il ne fait ni du filtre ni du group by et il affiche un message d'erreur
    Voici le resultat:
    Nom : liste2.png
Affichages : 385
Taille : 13,1 Ko

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup, j'ai corrigé ma requête et j'ai réussi à obtenir le bon résultat

    Voici ma nouvelle requête si quelqu’un est intéressé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
       Dim rapportFinal = From rpt In lstRapport
                               Group By rpt.NumPiece, rpt.Societe
                                Into mygroup = Group, Count(), Sum(rpt.NombreAnomalie)
                                Select New With {.societe = Societe, .piece = NumPiece, .nombreligne = mygroup.Count(), .nombreAno = Sum, _
                                                .numLignes = String.Join(",", mygroup.Where(Function(n) n.NombreAnomalie > 0).Select(Function(ano) ano.NumLigne.ToString()))}

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Génial ravi d'avoir pu t'aider, surtout que tu as su te débrouiller tout seul pour adapter le code à ta requête.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2010, 08h42
  2. Tri d'une liste d'objet CObList
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 13/07/2005, 13h50
  3. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11
  4. [Kylix] Composant - Liste d'objet
    Par Metal3d dans le forum EDI
    Réponses: 1
    Dernier message: 13/12/2002, 22h17
  5. liste d'objets
    Par Pierrot dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2002, 09h56

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