熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

datatable序列化與反序列化

2013-11-13 10:02:59  來源: .NET編程 
    // datatable序列化
   
    public string getSendDetailQuery(DateTime timeS DateTime timeE string sccount)
   
    {
   
    try
   
    {
   
    SmsOperate so = new SmsOperate()
   
    //得到dt
   
    DataTable dtt = sogetSendDetailQuery(timeS timeE sccount)
   
    JavaScriptSerializer serializer = new JavaScriptSerializer()
   
    string aaa = Serialize(dtt false)//datatable不能直接序列化此為序列化方法
   
    return : + aaa;
   
    }
   
    catch (Exception e)
   
    {
   
    return + eMessage;
   
    }
   
    }
   
    /// <summary>序列化方法
   
    /// 不需要分頁
   
    /// </summary>
   
    /// <param name=dt></param>
   
    /// <param name=flag>false</param>
   
    /// <returns></returns>
   
    public string Serialize(DataTable dt bool flag)
   
    {
   
    JavaScriptSerializer serializer = new JavaScriptSerializer()
   
    List<Dictionary<string object》 list = new List<Dictionary<string object》()
   
    foreach (DataRow dr in dtRows)
   
    {
   
    Dictionary<string object> result = new Dictionary<string object>()
   
    foreach (DataColumn dc in dtColumns)
   
    {
   
    resultAdd(dcColumnName dr[dc]ToString())
   
    }
   
    listAdd(result)
   
    }
   
    return serializerSerialize(list) ;
   
    }
   
    //反序列化
   
    public DataTable getSendDetailTest()
   
    {
   
    DataTable dtb = new DataTable()
   
    //得到序列化結果aaa
   
    string aaa = getSendDetailQuery(ConvertToDateTime( :: ConvertToDateTime( :: wangsub
   
    if (aaaSubstring( ) ==
   
    {
   
    try
   
    {
   
    JavaScriptSerializer serializer = new JavaScriptSerializer()
   
    // var obj = serializerDeserializeObject(aaa)//反序列化
   
    ArrayList dic = serializerDeserialize<ArrayList>(aaa)//反序列化ArrayList類型
   
    if (dicCount >
   
    {
   
    foreach (Dictionary<string object> drow in dic)
   
    {
   
    if (dtbColumnsCount ==
   
    {
   
    foreach (string key in drowKeys)
   
    {
   
    dtbColumnsAdd(key drow[key]GetType())//添加dt的列名
   
    }
   
    }
   
    DataRow row = dtbNewRow()
   
    foreach (string key in drowKeys)
   
    {
   
    row[key] = drow[key];//添加列值
   
    }
   
    dtbRowsAdd(row)//添加一行
   
    }
   
    }
   
    }
   
    catch (Exception e)
   
    {
   
    //
   
    }
   
    }
   
    else
   
    {
   
    //
   
    }
   
    return dtb;
   
    }
From:http://tw.wingwit.com/Article/program/net/201311/12385.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.