13

私の質問は、XElements の条件付き作成に関するものです。つまり、条件が満たされた場合は XElement を作成し、そうでない場合は XElement の作成をスキップしますか? この時点で、 IsEmpty が true かどうかをチェックすることで、空の XElements を作成し、すべての空の要素を削除できますが、それはどういうわけか正しくないと感じます...

私は、小さな例が適切かもしれないと感じています:

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", ""))
    ));

「Author」要素はオプションの要素であり、作成者がわからない場合は、単純にその要素を XML に配置しないことを想像してください。単純で、私の意見では、醜い解決策は、要素を作成することです。 、空の要素として、後で削除します。

誰でもエレガントなソリューションを作成する方法を知っているので、次のように言えば:

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

よろしくお願いいたします。必要な場合は、お気軽にお問い合わせください。

4

1 に答える 1

32

null は構築時にスキップされるという事実を利用します。

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

(LINQ to XML には、このように作業を楽しくする、きちんとした小さな設計上の決定がたくさんあります。)

于 2010-10-21T19:19:16.977 に答える