zoukankan      html  css  js  c++  java
  • DataTable的序列化和反序列化

    /// <summary>
    /// DataTable序列化
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static string SerializeDataTable(DataTable dt)
    {
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
    foreach (DataRow dr in dt.Rows)//每一行信息,新建一个Dictionary<string,object>,将该行的每列信息加入到字典
    {
    Dictionary<string, object> result = new Dictionary<string, object>();
    foreach (DataColumn dc in dt.Columns)
    {
    result.Add(dc.ColumnName, dr[dc].ToString());
    }
    list.Add(result);
    }
    return serializer.Serialize(list);//调用Serializer方法
    }
    /// <summary>
    /// DataTable反序列化
    /// </summary>
    /// <param name="strJson"></param>
    /// <returns></returns>
    public static DataTable DeserializerTable(string strJson)
    {
    DataTable dt = new DataTable();
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    ArrayList arralList = serializer.Deserialize<ArrayList>(strJson);//反序列化ArrayList类型
    if (arralList.Count > 0)//反序列化后ArrayList个数不为0
    {
    foreach (Dictionary<string, object> row in arralList)
    {
    if (dt.Columns.Count == 0)//新建的DataTable中无任何信息,为其添加列名及类型
    {
    foreach (string key in row.Keys)
    {
    dt.Columns.Add(key, row[key].GetType());//添加dt的列名
    }
    }
    DataRow dr = dt.NewRow();
    foreach (string key in row.Keys)//讲arrayList中的值添加到DataTable中
    {

    dr[key] = row[key];//添加列值
    }
    dt.Rows.Add(dr);//添加一行
    }
    }
    return dt;
    }

  • 相关阅读:
    shell---telnet shell实现
    设计模式-建造者模式
    关于Http2
    转载Resharper使用
    设计模式-原型模式
    设计模式-代理模式
    设计模式-装饰器模式
    设计模式-简单工厂和策略模式
    C#直接发送打印机命令到打印机及ZPL常用打印命令
    C#打印机操作类
  • 原文地址:https://www.cnblogs.com/xsj1989/p/4741567.html
Copyright © 2011-2022 走看看