/// <summary>
/// 序列化DataTable
/// </summary>
/// <param name="pDt">包含数据的DataTable</param>
/// <returns>序列化的DataTable</returns>
public static string GetXmlFormatDs(DataSet ds)
{
XmlSerializer ser = new XmlSerializer(ds.GetType());
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, System.Text.Encoding.Default);
ser.Serialize(writer, ds);
writer.Close();
return System.Text.Encoding.Default.GetString(mem.ToArray());
}
/// <summary>
/// 反序列化DataTable
/// </summary>
/// <param name="ds">序列化的DataTable</param>
/// <returns>DataTable</returns>
public static DataSet GetDsFormatXml(string ds)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(DataSet));
StreamReader mem = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(ds)), System.Text.Encoding.Default);
return (DataSet)mySerializer.Deserialize(mem);
}
public byte[] GetBinaryFormatDataSet(DataSet ds)
{
//创建内存流
MemoryStream memStream = new MemoryStream();
//产生二进制序列化格式
IFormatter formatter = new BinaryFormatter();
//指定DataSet串行化格式是二进制
ds.RemotingFormat = SerializationFormat.Binary;
//串行化到内存中
formatter.Serialize(memStream, ds);
//将DataSet转化成byte[]
byte[] binaryResult = memStream.ToArray();
//清空和释放内存流
memStream.Close();
memStream.Dispose();
return binaryResult;
}
/// <summary>
/// DataSet反序列化
/// </summary>
/// <param name="binaryData">需要反序列化的byte[]</param>
/// <returns></returns>
public DataSet GetDataSetFromatBinary(byte[] binaryData)
{
//创建内存流
MemoryStream memStream = new MemoryStream(binaryData);
//产生二进制序列化格式
IFormatter formatter = new BinaryFormatter();
//反串行化到内存中
object obj = formatter.Deserialize(memStream);
//类型检验
if (obj is DataSet)
{
DataSet dataSetResult = (DataSet)obj;
return dataSetResult;
}
else
{
return null;
}
}
序列化问题!Datatable
最新推荐文章于 2020-06-10 17:17:06 发布