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 :

Précédence dans une énumération


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut Précédence dans une énumération
    Bonjour à tous,

    Je possède une liste d'évènements qui ont été générés à un temps défini.
    Je souhaiterais connaître le temps moyen qui sépare mes évènements.
    Pour cela je voudrais créer une liste de nouveaux objets associant les évènements et le temps le séparant de l'élément précédent.
    Mais je ne vois pas comment faire avec la nouvelle syntaxe C#3/LINQ.
    Il faudrait qu'il existe un mot clé du genre prev qui pointerait sur l'élément précédemment analysé...

    Des idées?

    Merci d'avance,
    Nicolas

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Il suffit d'utiliser une requête imbriquée de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     var query = from currentEvent in m_MyEvents
                            orderby currentEvent.Time ascending
                            select new
                            {
                                ID = currentEvent.ID,
                                Time = currentEvent.Time,
                                Diff = (from currentTest in m_MyEvents
                                           where currentTest.Time < currentEvent.Time
                                           orderby currentTest.Time descending
                                           select currentEvent.Time - currentTest.Time).FirstOrDefault()
                            };

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Merci beaucoup, ça pourrait effectivement me convenir

    Par contre cela ne risque-t-il pas d'être plus lent qu'une simple boucle for?

  4. #4
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Je dirais que c'est vraiment négligeable mais à part mesurer soi-même, c'est difficile de répondre précisément.

  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 : 44
    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
    Par défaut
    Citation Envoyé par NicolasJolet Voir le message
    Par contre cela ne risque-t-il pas d'être plus lent qu'une simple boucle for?
    Citation Envoyé par Jérôme Lambert Voir le message
    Je dirais que c'est vraiment négligeable mais à part mesurer soi-même, c'est difficile de répondre précisément.
    A mon avis ça dépend surtout de la source des données... Si c'est une source EF avec une base SQL Server, Oracle ou autre, ce sera peut-être optimisé, mais avec une source objet par exemple je pense que ça fera des boucles imbriquées...

  6. #6
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Citation Envoyé par tomlev Voir le message
    A mon avis ça dépend surtout de la source des données... Si c'est une source EF avec une base SQL Server, Oracle ou autre, ce sera peut-être optimisé, mais avec une source objet par exemple je pense que ça fera des boucles imbriquées...
    Ça n'a pas de rapport avec une base de données normalement vu qu'il a parlé d'événements reçus à un temps donné. A moins que Nicolas nous cache quelque chose

Discussions similaires

  1. Erreur dans une énumération
    Par guidono dans le forum Débuter
    Réponses: 4
    Dernier message: 03/01/2013, 14h39
  2. [Débutant] Sauver le résultat d'une requête dans une énumération
    Par arngrimur dans le forum C#
    Réponses: 5
    Dernier message: 11/08/2011, 15h02
  3. [PPT-2003] Alignement du texte dans une énumération
    Par bolide7 dans le forum Powerpoint
    Réponses: 11
    Dernier message: 03/08/2011, 12h22
  4. Réponses: 11
    Dernier message: 12/08/2006, 10h22
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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