來源
各大搜尋引擎及各地同行網友。
用途
幾種常見資料型別的轉換,此處僅列出已實作無誤的部份。
原始碼
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; } } }