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

Dotnet Discussion :

[XLinq][C#3] clause where dans un select


Sujet :

Dotnet

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [XLinq][C#3] clause where dans un select
    Bonjour,

    je suis en train de regarder l'utiliter de Linq pour me créer un petit outil de gestion de fichiers XML et de recherche dans le-dit fichier.
    Pour ce faire, j'utilise le tutorial à cette adresse :
    http://morpheus.developpez.com/linq/

    Partant du fichier XML suivant :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?xml version="1.0" encoding="utf-8" ?> 
    <contacts>
    -    <contact>
           <name>Patrick Hines</name> 
           <phone type="home">206-555-0144</phone> 
           <phone type="work">425-555-0145</phone> 
    -       <address>
               <street1>123 Main St</street1> 
               <city>Mercer Island</city> 
               <state>WA</state> 
               <postal>68042</postal> 
             </address>
             <netWorth>10</netWorth> 
          </contact>
     
    -      <contact>
             <name>Morgan Bourgeois</name> 
             <phone type="home">0677120200</phone> 
             <phone type="work">425-555-0145</phone> 
    -         <address>
                  <street1>123 Main St</street1> 
                   <city>Mercer Island</city> 
                   <state>WA</state> 
                   <postal>68042</postal> 
              </address>
             <netWorth>10</netWorth>  
     
        </contact>
      </contacts>


    Soit le code suivant :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                XElement contacts = XElement.Load(@"C:\XML\Contact.xml");
     
                var result2 = from c in contacts.Elements("contact")
                              //where c.Element("Name").Value  == "Patrick Hines"
                               //where c.Name  == "Patrick Hines"
                                 select c.Element("name");
     
                    foreach(XElement name in result2)
                        {
                        Console.WriteLine(name.Value);
                        }
     
                Console.WriteLine("Juste pour le debugg");
                Console.ReadLine();

    Qui m'affiche

    Patrick Hines
    Morgan Bourgeois
    j'aimerais pourvoir faire un where sur le nom (par exemple), j'ai essayé :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                var result2 = from c in contacts.Elements("contact")
                              where c.Element("Name").Value  == "Patrick Hines"
                               //where c.Name  == "Patrick Hines"
                                 select c.Element("name");


    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                var result2 = from c in contacts.Elements("contact")
                              where c.Element("Name")  == "Patrick Hines"
                               //where c.Name  == "Patrick Hines"
                                 select c.Element("name");

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                var result2 = from c in contacts.Elements("contact")
                              //where c.Element("Name")  == "Patrick Hines"
                               where c.Name  == "Patrick Hines"
                                 select c.Element("name");

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                var result2 = from c in contacts.Elements
                              //where c.Element("Name")  == "Patrick Hines"
                               where c.Name  == "Patrick Hines"
                                 select c.Element("name");

    Mais rien n'y fait, je ne trouve pas comment faire les select dans ce xml, quelqu'un saurait me débloquer?

    Merci beaucoup
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Attention, le XML est sensible à la casse

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var result2 = from c in contacts.Elements("contact")
                              where c.Element("name")  == "Patrick Hines"
                              select c.Element("name");

    toi, tu fesais:

    where c.Element("Name")

    au lieu de

    where c.Element("name")



  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Je viens d'essayer avec cette correction mais j'ai droit à l'erreur suivante :

    Error 1 Operator '==' cannot be applied to operands of type 'System.Xml.XLinq.XElement' and 'string'
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  4. #4
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Autant pour moi un cast et ca passe merci
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  5. #5
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    .Value, non ?...

    Le cast sur XElement semble un peu bourrin.

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

Discussions similaires

  1. Clause count dans un select
    Par TigerCX dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/04/2010, 11h21
  2. clause where dans une requette
    Par bennkabazz dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/12/2008, 18h28
  3. Clause WHERE dans requete
    Par c+cool dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/10/2007, 07h13
  4. Clause where dans gotorecord
    Par Mut dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/09/2007, 08h15
  5. clause where dans ma requete join
    Par jive dans le forum Requêtes
    Réponses: 6
    Dernier message: 02/02/2007, 22h42

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