Question XDocument: création conditionnelle d'un nouveau XElement


Ma question concerne la création conditionnelle de XElements, c'est-à-dire que si une condition est remplie, créez le XElement, sinon ignorez la création du XElement? A ce moment, je pourrait créez des XElements vides, puis supprimez tous les éléments vides, en cochant, si IsEmpty est vrai, mais que cela ne se sent pas bien ...

Je pense qu'un petit exemple pourrait être dans l'ordre:

XDocument doc = new XDocument(new XDeclaration("1.0","utf-8","yes"),
new XElement("Books",
    new XElement("Book", new XElement("Title", "Essential LINQ"), new XElement("Author", "Charlie Calvert,Dinesh Kulkarni")),
    new XElement("Book", new XElement("Title", "C# in Depth"), new XElement("Author", "Jon Skeet")),
    new XElement("Book", new XElement("Title", "Some Title"), new XElement("Author", ""))
    ));

Imaginons que l'élément "Author" soit un élément facultatif, et si nous ne connaissons pas l'auteur, nous ne mettons tout simplement pas cet élément dans le XML - la solution simple, et à mon avis laide, est de créer l'élément , comme un élément vide, et retirez-le ensuite.

Tout le monde sait faire une solution élégante, pour ainsi dire quelque chose comme ceci:

condition_met ? new XElement("Author",variable_with_value) : do not create element

Cordialement et n'hésitez pas à demander des informations supplémentaires, si nécessaire.


11
2017-10-21 19:16


origine


Réponses:


Utilisez le fait que les valeurs nulles sont ignorées dans la construction:

condition_met ? new XElement("Author", variable_with_value) : null

(LINQ to XML est plein de petites décisions de conception comme celle-ci, qui rendent ce travail agréable.)


28
2017-10-21 19:19