none
Comment éviter d'énumérer une séquence lorsqu'elle a seul item ? RRS feed

  • Question

  • Bonjour,

    Je souhaite simplement sélectionner qq balises dans un document XML qui ne contient qu'un "item" pour construire un XElement. Cela fonctionne bien mais dans la mesure où il s'agit d'une requête retardée je dois l'énumérer pour qu'elle s'exécute. Ce qui me gène c'est de devoir faire une énumération alors que je suis sûr de n'avoir qu'un "item" dans ma séquence résultat, comment faire autrement ?

     Par exemple dans ce document source je ne garde que les balises author et editor :

    <book>

    <author>smacchia</author>

    <title>C#</title>

    <editor>O'reilly</editor>

    <year>2003</year>

    </book>

    XDocument xSource = XDocument.Load(urlSource);
    IEnumerable<XElement> xDestination =   from data in xSource.Elements()
                                		select new XElement("root",
                                        new XElement("author", data Element("author").Value),
                                        new XElement("editor", data.Element("editor").Value)
                                        );

    Comment récupérer xDestination sous forme de XElement sans l'énumérer ?

    Merci.


    Cordialement, Thierry


    • Modifié -thierry- lundi 16 juillet 2012 09:42
    lundi 16 juillet 2012 08:23

Réponses

  • Bonjour,

    Utilisez dans ce cas en fin de requête les méthodes Single() ou SingleOrDefault().

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Marqué comme réponse -thierry- lundi 16 juillet 2012 09:47
    lundi 16 juillet 2012 09:40
    Modérateur