4

リストから XML を作成しようとしています。リストから XML を形成する匿名クラスを作成しています。

var xEle = new XElement("Employees",
                from emp in empList
                select new XElement("Employee",
                             new XElement("ID", emp.ID),
                               new XElement("FName", emp.FName),
                             new XElement("LName", emp.LName)
                      ));

FnameorLnameが null の場合、どのように処理すればよいですか?

また、オブジェクトが null でない場合にのみ要素を動的に追加したいと考えています。たとえば、Fnameが null の場合、Fname の作成をスキップする必要があります。

new XElement("ID", emp.ID),
new XElement("LName", emp.LName)

それ、どうやったら出来るの?

4

1 に答える 1

11

あなたのコードは実際には匿名型をまったく示していません-XElement作成だけです。nullただし、コンテンツを追加するときにLINQ to XML が値を無視するという事実を利用できます。したがって、次を使用できます。

select new XElement("Employee",
                    new XElement("ID", emp.ID),
                    emp.FName == null ? null : new XElement("FName", emp.FName),
                    emp.LName == null ? null : new XElement("LName", emp.LName)
                   )

stringまたは、拡張メソッドを次のように記述できます。

public static XElement ToXElement(this string content, XName name)
{
    return content == null ? null : new XElement(name, content);
}

そしてそれを呼び出す:

select new XElement("Employee",
                    emp.ID.ToXElement("ID"),
                    emp.FName.ToXElement("FName"),
                    emp.LName.ToXElement("LName"))
于 2013-04-30T07:32:50.410 に答える