[英]LINQ to XML: Don't Create XAttribute if value is DBNull.Value
我正在使用C#查詢數據庫並創建一個DataTable
。 從這個DataTable
我正在使用LINQ to XML創建XML文件。
我的問題是,對於數據表中的空列,當我在元素上調用SetAttributeValue時,它將創建一個空屬性。 如果value為null
SetAttributeValue(name, value)
根本不添加屬性。 有沒有辦法為DBNull.Value
模仿此行為? 我不想檢查每一行和每一列,以查看該值是否等於DBNull.Value
。
預期:
<Root>
<Element1 E1="Test"/>
</Root>
實際:
<Root>
<Element1 E1="Test" E2=""/>
</Root>
Element1的代碼:
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.