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"))
source share