如何将DataTable序列化为字符串?

Uwe*_*eim 13 .net string datatable serialization

最近我需要将DataTable一个字符串序列化以进行进一步处理(存储在文件中).

所以我问自己:如何将DataTable序列化为字符串?

Uwe*_*eim 11

这是我为执行将序列DataTable化为字符串的任务而编写的代码:

public static string SerializeTableToString( DataTable table )
{
    if (table == null)
    {
        return null;
    }
    else
    {
        using (var sw = new StringWriter())
        using (var tw = new XmlTextWriter(sw))
        {
            // Must set name for serialization to succeed.
            table.TableName = @"MyTable";

            // --

            tw.Formatting = Formatting.Indented;

            tw.WriteStartDocument();
            tw.WriteStartElement(@"data");

            ((IXmlSerializable)table).WriteXml(tw);

            tw.WriteEndElement();
            tw.WriteEndDocument();

            // --

            tw.Flush();
            tw.Close();
            sw.Flush();

            return sw.ToString();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这对那里的某个人有用.

(请注意,我在过去询问是否可以发布片段并得到答复,这应该没问题;如果我错了,请纠正我 - 谢谢!)


atc*_*way 7

您也可以尝试将DataTable编写为XML,它的工作原理非常好:

Dim dt As DataTable
Dim DataTableAsXMLString As String
'...code to populate DataTable
Using sw As New StringWriter()       
    dt.WriteXml(sw)
    DataTableAsXMLString = sw.ToString()
End Using
Run Code Online (Sandbox Code Playgroud)

...然后,如果需要,您可以将XML转换回DataTable:

Dim ds As New DataSet
Dim dt2 As DataTable
Using sr As New StringReader(DataTableAsXMLString)
    ds.ReadXml(sr)
    dt2 = ds.Tables(0)
End Using
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你也发布了相反的过程. (3认同)