Недавно я был в потребности сериализировать a DataTable
как строка для последующей обработки (хранящий в файле).
Таким образом, я спросил меня: Как сериализировать DataTable в строку?
Вот код, который я написал для выполнения задачи сериализации 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();
}
}
}
Надеюсь, это будет полезно кому-то где-то там.
(Пожалуйста, обратите внимание, что я спрашивал в прошлом, можно ли публиковать сниппеты, и получил ответ, что это должно быть нормально; поправьте меня, если я не прав - спасибо!)
Я бы предложил НЕ сериализовать DataTable и использовать настраиваемые сущности для сохранения / контрактов, чтобы избежать разницы в деталях реализации между версиями .Net . XML-схема класса DataTable - это недокументированная деталь реализации, на которую не следует полагаться.