來源

各大搜尋引擎及各地同行網友。

 

用途

幾種常見資料型別的轉換,此處僅列出已實作無誤的部份。

 

原始碼

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Script.Serialization;
using System.Windows.Forms;


namespace SybaseUtility
{
    public static class DataConverter
    {
//
        // DataGridView 轉 DataTable
        //
        public static DataTable DataGridViewToDataTable(DataGridView dgv)
        {
            DataTable dt = new DataTable();

            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                DataColumn dc = new DataColumn(dgv.Columns[i].Name.ToString());
                dt.Columns.Add(dc);
            }

            for (int j = 0; j < dgv.Rows.Count; j++)
            {
                DataRow dr = dt.NewRow();

                for (int k = 0; k < dgv.Columns.Count; k++)
                {
                    dr[k] = Convert.ToString(dgv.Rows[j].Cells[k].Value);
                }

                dt.Rows.Add(dr);
            }

            return dt;
        }

        // DataTable 轉 Json
        public static string DataTableToJson(DataTable dt)
        {
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            ArrayList arrayList = new ArrayList();
            string json = string.Empty;

            if (dt == null)
            {
                json = string.Empty;
            }
            else
            {
                foreach (DataRow dataRow in dt.Rows)
                {
                    Dictionary<string, object> dictionary = new Dictionary<string, object>();

                    foreach (DataColumn dataColumn in dt.Columns)
                    {
                        dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName]);
                    }

                    arrayList.Add(dictionary);
                }

                json = javaScriptSerializer.Serialize(arrayList);
                json = Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match =>
                {
                    DateTime dtc = new DateTime(1970, 1, 1);
                    dtc = dtc.AddMilliseconds(long.Parse(match.Groups[1].Value));
                    dtc = dtc.ToLocalTime();
                    return dtc.ToString("yyyy-MM-dd HH:mm:ss");
                });
            }

            return json;
        }

        // Json 轉 DataTable
public static DataTable JsonToDataTable(string json) { DataTable dt; if (String.IsNullOrEmpty(json)) { dt = new DataTable(); dt = null; return dt; } else { json = Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match => { DateTime dtc = new DateTime(1970, 1, 1); dtc = dtc.AddMilliseconds(long.Parse(match.Groups[1].Value)); dtc = dtc.ToLocalTime(); return dtc.ToString("yyyy-MM-dd HH:mm:ss"); }); //转换json格式 json = json.Replace(",\"", "*\"").Replace("\":", "\"#").ToString(); //取出表名 var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase); //去除表名 json = json.Substring(json.IndexOf("[") + 1); json = json.Substring(0, json.IndexOf("]")); //获取数据 rg = new Regex(@"(?<={)[^}]+(?=})"); MatchCollection mc = rg.Matches(json); dt = null; for (int i = 0; i < mc.Count; i++) { string row = mc[i].Value; string[] rows = row.Split('*'); //创建表 if (dt == null) { dt = new DataTable(); foreach (string str in rows) { var dc = new DataColumn(); string[] cell = str.Split('#'); if (cell[0].Substring(0, 1) == "\"") { int a = cell[0].Length; dc.ColumnName = cell[0].Substring(1, a - 2); } else { dc.ColumnName = cell[0]; } dt.Columns.Add(dc); } } DataRow dr = dt.NewRow(); //增加内容 for (int r = 0; r < rows.Length; r++) { dr[r] = rows[r].Split('#')[1].Trim().Replace("", ",").Replace("", ":").Replace("\"", "").Replace("null", null); } dt.Rows.Add(dr); } } return dt; } } }

 

 

posted on 2015-12-01 09:56  吉格艾諾  阅读(172)  评论(0编辑  收藏  举报