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 typed dataset : join + group + sum


Sujet :

Linq

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 79
    Points
    79
    Par défaut linq to typed dataset : join + group + sum
    Bonjour,

    Je ne parviens pas à sommer des montants d'une table regroupés sur un libellé d'une autre table.
    En clair, je n'arrive pas à finaliser le transfert de la requête SQL suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //select Table1.Libelle, Sum(Table2.Quantite * Table2.Montant)
    //from Table1
    //inner join table2 on Table1.cle = table2.cle
    //group by Table1.Libelle
    en linq to typed dataset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var query = from t1 in ds.Table1 
                     join t2 in ds.Table2 on t1.cle equals t2.cle
                     group t1 by new {c1 = t1.Libelle}            
                     into grp
                     select new {
                     x = grp.Key
     
                     //???????????????
                     };
    Y a-t-il un spécialiste pour combler les ?????? ou me mettre sur la bonne voie ?
    Merci.
    Laumon.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Est ce que cela fait l'affaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var query=from t1 in tables1
                   join t2 in tables2 on t1.Key equals t2.Key
                   select new { t1.Libelle, net=t2.Montant*t2.Quantite }
                       into grp
                       group grp by grp.Libelle
                           into pp
                           from p in pp
                           select new
                           {
                               p.Libelle,
                               net=pp.Sum(o => o.net)
                           };

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 79
    Points
    79
    Par défaut
    Merci,

    Ça fonctionne parfaitement!
    J'avais fait ça en 2 étapes mais ainsi je pense que ce sera plus optimisé en termes d'accès à la base de données.

    Question subsidiaire qui peut être utile, si je souhaite avoir 2 champs dans le "group grp by grp.Libelle, grp.champ2" Comment ça s'écrit ?

    Merci encore pour cette requête puissante...

    Laumon.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 37
    Points
    37
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    group grp by new { grp.Libelle, grp.champ2 }

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 79
    Points
    79
    Par défaut
    Un simple mot, le "new" et tout s'éclaircit !
    C'est parfait, super !
    Merci beaucoup.
    Laumon.

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

Discussions similaires

  1. Linq to Dataset Join
    Par Pelote2012 dans le forum Linq
    Réponses: 4
    Dernier message: 24/01/2012, 14h56
  2. Problème INNER JOIN GROUP BY
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/05/2007, 16h18
  3. requete SQL sur Typed DataSet, sans utiliser SQL serveur
    Par Harry_polin dans le forum Accès aux données
    Réponses: 2
    Dernier message: 06/10/2006, 19h15
  4. Récupérer les infos d'une colonne de type DataSet
    Par Zugg dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/02/2006, 14h46
  5. Jointures de type OUTER JOIN
    Par Oluha dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 16h11

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