0

C# を使用してデータベースにクエリを実行し、DataTable. これから、DataTableLINQ to XML を使用して XML ファイルを作成します。

私の問題は、データ テーブルの null 列の場合、要素で SetAttributeValue を呼び出すと、空の属性が作成されることです。SetAttributeValue(name, value)値が の場合、属性をまったく追加しませんnull。この動作を模倣する方法はあり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;
4

1 に答える 1

1

拡張メソッドを自分で作成します。

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);
    }
}
于 2014-09-22T19:49:57.113 に答える