LINQ to XML:Don';t如果值为DBNull.value,则创建XAttribute
本文关键字:DBNull value XAttribute 创建 如果 XML to Don LINQ | 更新日期: 2023-09-27 18:24:01
我正在使用C#查询数据库并创建一个DataTable
。在这个DataTable
中,我使用LINQ to XML来创建一个XML文件。
我的问题是,对于数据表中的空列,当我对元素调用SetAttributeValue时,它会创建一个空属性。如果值为null
,则SetAttributeValue(name, value)
根本不添加属性。有没有办法模仿DBNull.Value
的这种行为?我不想检查每一行和每一列的值是否等于DBNull.Value
。
预期:
<Root>
<Element1 E1="Test"/>
</Root>
实际:
<Root>
<Element1 E1="Test" E2=""/>
</Root>
元素1的代码:
DataTable testTable = new DataTable();
testTable.Columns.Add("E1");
testTable.Columns.Add("E2");
testTable.Rows.Add("Test", DBNull.Value);
XElement element = new XElement("Element1");
element.SetAttributeValue("E1", testTable.AsEnumerable().Select(item => item["E1"]));
element.SetAttributeValue("E2", testTable.AsEnumerable().Select(item => item["E2"]));
return element;
给自己写一个扩展方法:
public static class Extension
{
public static void SetAttributeValueEx(this XElement source, XName name, object value)
{
if (value == DBNull.Value) value = null;
source.SetAttributeValue(name, value);
}
}