如果值不为Null,则创建XElement
本文关键字:创建 XElement Null 如果 | 更新日期: 2023-09-27 18:11:32
我试图从列表创建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)
));
如果Fname
或Lname
为空,我该如何处理?
我还想动态添加元素,只有当对象不为空。例如,如果Fname
为空,我需要跳过创建Fname:
new XElement("ID", emp.ID),
new XElement("LName", emp.LName)
我该怎么做?
您的代码实际上根本没有显示匿名类型—只是XElement
创建。但是,您可以使用LINQ to XML在添加内容时忽略null
值这一事实。所以你可以使用:
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"))