Creating an XElement if the value is not Null

I am trying to create XML from a list. I create an anonymous class from the list to form the 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) )); 

How do I handle if the value of Fname or Lname is null?

Also, I want to dynamically add elements only if the object is not null. For example, if Fname is null, I need to skip creating Fname:

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

How to do it?

+4
source share
1 answer

Your code does not display an anonymous type at all - just an XElement . However, you can use the fact that LINQ to XML ignores null values ​​when adding content. So you can use:

 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) ) 

Or you could write an extension method on string :

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

And name it with:

 select new XElement("Employee", emp.ID.ToXElement("ID"), emp.FName.ToXElement("FName"), emp.LName.ToXElement("LName")) 
+11
source

All Articles