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] récupérer une valeur dans un xml


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut [linq] récupérer une valeur dans un xml
    Bonjour,

    Je suis en train d'effectuer quelques tests avec linq et je rencontre un problème.

    J'ai document xml qui ressemble à ça :
    <Subscribers>
    <Subscriber id="2"></Subscriber>
    <Subscriber id="3"></Subscriber>
    <Subscriber id="1" ></Subscriber>
    </Subscribers>

    J'essaie de sélectionner l'ID le plus grand.

    J'ai écris pour çelà :

    var ids = from subscriber in SubscribersDoc.Root.Elements()
    orderby subscriber.Attribute("id").Value descending
    select subscriber.Attribute("id").Value;

    Comme il semble qu'il ne soit pas possible de faire select max(subscriber.Attribute("id").Value) (est-ce possible ??), je choisis de ranger mes id sélectionnés par ordre décroissant puis de prendre le premier. Le problème que j'ai est justement de prendre le premier. Ids est en fait implicitement du type Ienumerable<string> et je ne peux donc pas écrire Ids[0].
    Avez-vous une idée pour récupérer proprement un des id de ids (en l'occurrence ici le premier) ?

    merci d'avance pour votre aide.

  2. #2
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Sur un IEnumerable<string>, tu as les extension methods First et Max

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par maa
    Comme il semble qu'il ne soit pas possible de faire select max(subscriber.Attribute("id").Value) (est-ce possible ??),
    Si, c'est possible avec Linq To XSD: http://www.microsoft.com/downloads/d...DisplayLang=en

    Avez-vous une idée pour récupérer proprement un des id de ids (en l'occurrence ici le premier) ?

    merci d'avance pour votre aide.
    Une technique possible:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach(string s in ids)
    {
         // Ici, tu récupères un à un tes identifiants: tu n'as plus qu'as les caster
         // en entier et tu récupères le plus grand
    }


    Sinon, la technique de Mathieu est mieux

    A+

  4. #4
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    merci pour vos réponses.

    En écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id = int.Parse(ids.Max())
    J'obtiens le message d'erreur suivant :
    Sequence contains no elements
    Savez-vous pourquoi ?

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Si tu regardes le contenu de ids, tu as quoi ?

  6. #6
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Je vois pas le détail des strings à l'intérieur. Mais quand je tape ids dans la prompt command, j'obtiens :
    {System.Query.Sequence.SelectIterator<System.Xml.XLinq.XElement,string>}

    En tout cas, il contient bien les id dont j'ai besoin car si j'écris :

    IEnumerator<string> ien = ids.GetEnumerator();
    ien.MoveNext();
    id = int.Parse(ien.Current) + 1;

    J'obtiens bien ce que je veux.

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Et si tu testes avec ma méthode ?

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

Discussions similaires

  1. Récupérer une valeur d'un xml dans une variable
    Par FANDENEGI dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/03/2013, 20h41
  2. Récupérer une valeur dans une JList
    Par Noosymer dans le forum Composants
    Réponses: 6
    Dernier message: 17/06/2010, 23h53
  3. récupérer une valeur dans un selected
    Par lacfab dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 09h48
  4. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  5. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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