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 :

conversion sql Linq


Sujet :

Linq

  1. #1
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut conversion sql Linq
    Bonjour,
    c'est possible d'avoir la conversion de cette requet sql to Linq :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * from (
                        select m.*, row_number() over (
                                                                   partition by IDDevice
                        order by MessageDate desc) as rn
                        from CANBusData1 m
                        ) m2
                        where m2.rn = 1;


    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu veux juste récupérer la ligne la plus récente, c'est ça ? dans ce cas tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        db.CANBusData1.OrderByDescending(m => m.MessageDate).FirstOrDefault();

  3. #3
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut
    Merci,
    Oui mais avant je dois les grouper par IDDevice

    IDDevice Date
    1 dt11
    1 dt12
    1 dt13
    2 dt21
    2 dt22
    3 dt31

    Merci

  4. #4
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut
    Excuse moi ya eu un probleme dans les espaces

    IDDevice Date
    1 ------- dt11
    1 -------dt12
    1------- dt13
    2------- dt21
    2------- dt22
    3------- dt31

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ah ok, j'avais pas bien compris le PARTITION BY...
    Donc tu veux grouper par IDDevice, et prendre le plus récent de chaque groupe ?

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from m in db.CANBusData1
    orderby m.MessageDate descending
    group m by m.IDDevice into g
    select g.First()

  6. #6
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut
    Ok merci,
    j'ai essayé mais ce la ne marche pas !!
    var result = query .... il me renvois aucun résultat !

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Alghero Voir le message
    Ok merci,
    j'ai essayé mais ce la ne marche pas !!
    var result = query .... il me renvois aucun résultat !
    Bah il n'y a aucun filtre ni jointure, donc si ça ne renvoie rien, c'est qu'il n'y a rien au départ... tu es sûr qu'il y a quelque chose dans la table ?

  8. #8
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut
    Merci,
    Oui j'ai des données on db.CANBusData1
    ya quelque chose qui ne va pas dans la select du group.

    group m by m.IDDevice into g
    select g.First()

    Merci

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Si la table n'est pas vide, il est impossible que cette requête ne renvoie rien... Montre le code où tu utilises la requête, le problème doit être ailleurs.

  10. #10
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut
    bonjour,
    rien de speciale si je fais ce la

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      var val =(from m in db.CANBusData1
                          orderby m.MessageDate descending
                          group m by m.IDDevice into g
                          select g.First()).ToList();

    je ne trouve rien dan val


    et si je fais
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
     var val = (from m in db.CANBusData1 orderby m.MessageDate descending group  m by m.IDDevice  select m).ToList();

    Merci

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Alghero Voir le message
    je ne trouve rien dan val
    Comment tu vérifies qu'il n'y a rien ?

    Peux-tu tester la valeur de db.CANBusData1.Count() ?

    Citation Envoyé par Alghero Voir le message
    et si je fais
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
     var val = (from m in db.CANBusData1 orderby m.MessageDate descending group  m by m.IDDevice  select m).ToList();
    Je crois qu'il manque un bout de ta phrase... Si tu fais ça, tu as une erreur de syntaxe a priori

  12. #12
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 90
    Points : 78
    Points
    78
    Par défaut
    Bonjour tu as raison
    count me retourne 13 record.
    la raquette qui fonctionne c'est celle ci .

    var val = (from m in db.CANBusData1 orderby m.MessageDate descending select m).ToList()

    je pense le problème c'est après le groupement.

    Merci

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Bah je comprends pas comment c'est possible... j'ai fait un test de mon côté, cette requête renvoie bien les résultats attendus, du moment qu'il y a quelque chose dans la table.

    Essaie de regarder la requête SQL qui est générée en faisant ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var query = (ObjectQuery)
            (from m in db.CANBusData1
            orderby m.MessageDate descending
            group m by m.IDDevice into g
            select g.First());
    string sql = query.ToTraceString();

Discussions similaires

  1. Conversion SQL à LINQ to Entities
    Par acheo dans le forum Entity Framework
    Réponses: 1
    Dernier message: 07/02/2012, 21h03
  2. formulation requête sql->linq..
    Par allan0101 dans le forum Linq
    Réponses: 1
    Dernier message: 03/11/2010, 00h48
  3. Réponses: 0
    Dernier message: 29/10/2009, 16h22
  4. Conversion SQL en VB
    Par Tibog69 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 20/05/2008, 10h33
  5. [Migration] linq to sql => linq to entities
    Par anthyme dans le forum Accès aux données
    Réponses: 1
    Dernier message: 25/04/2008, 18h48

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