次の情報を含むユーザー提供のDataTableがあります。
| Name | Alias |
|---------------------------
| Batman | Dark Knight |
| Superman | Man of Steel |
| Spiderman | null |
このテーブルをXmlに変換して、ストアドプロシージャに送信し、次のようなXmlを取得する必要があります。
<Superheroes>
<Superhero Name="Batman" Alias="Dark Knight"/>
<Superhero Name="Superman" Alias="Man of Steel"/>
<Superhero Name="Spiderman"/>
</Superheroes>
この問題を解決するために、Linq-to-Xml(学習目的)を使用したいと思います。これが私がこれまでに持っているものです:
XDocument doc;
doc = new XDocument(
new XElement("Superheroes",
from row in table.AsEnumerable()
select new XElement("Superhero",
new XAttribute("Name", row.Field<string>("Name")),
new XAttribute("Alias", row.Field<string>("Alias"))
)));
問題はスパイダーマンの列です。nullが原因で、上記のクエリは機能しません。
質問
Linq-to-Xmlでnullスパイダーマン行を処理するにはどうすればよいですか?
ユーザーがエイリアス行を追加するのを忘れた場合、私はそのサイトを処理できる必要があります。その場合、エイリアスは(a)Xmlにまったく含まれていないか、(b)値が空である必要があります。