C#DataTable(转List /JSON/字典 互转)
1 #region 数据表DataTable 转键值对集合 List
2 /// <summary>
3 /// 数据表DataTable 转键值对集合 List
4 /// 把DataTable转成 List集合, 存每一行
5 /// 集合中放的是键值对字典,存每一列
6 /// </summary>
7 /// <param name="dt">数据表</param>
8 /// <returns>哈希表数组</returns>
9 public static List<Dictionary<string, object>> DataTableToList(DataTable dt)
10 {
11 List<Dictionary<string, object>> list
12 = new List<Dictionary<string, object>>();
13
14 foreach (DataRow dr in dt.Rows)
15 {
16 Dictionary<string, object> dic = new Dictionary<string, object>();
17 foreach (DataColumn dc in dt.Columns)
18 {
19 dic.Add(dc.ColumnName, dr[dc.ColumnName]);
20 }
21 list.Add(dic);
22 }
23 return list;
24 }
25 #endregion
26
27 #region 数据集转键值对数组字典
28
29 /// <summary>
30 /// 数据集转键值对数组字典
31 /// </summary>
32 /// <param name="dataSet">数据集</param>
33 /// <returns>键值对数组字典</returns>
34 public static Dictionary<string, List<Dictionary<string, object>>> DataSetToDic(DataSet ds)
35 {
36 Dictionary<string, List<Dictionary<string, object>>> result = new Dictionary<string, List<Dictionary<string, object>>>();
37
38 foreach (DataTable dt in ds.Tables)
39 result.Add(dt.TableName, DataTableToList(dt));
40
41 return result;
42 }
43 #endregion
44
45 #region 数据表Tables 转JSON
46 /// <summary>
47 /// 数据表转Tables JSON
48 /// </summary>
49 /// <param name="dataTable">数据表</param>
50 /// <returns>JSON字符串</returns>
51 public static string DataTableToJSON(DataTable dt)
52 {
53 return JsonHelper.ObjectToJSON(DataTableToList(dt));
54 }
55 #endregion
56
57 #region 将datatable转换为json
58 /// <summary>
59 /// 将datatable转换为json
60 /// </summary>
61 /// <param name="dtb">Dt</param>
62 /// <returns>JSON字符串</returns>
63 public static string Dtb2Json(DataTable dtb)
64 {
65 //JavaScriptSerializer jss = new JavaScriptSerializer();
66
67 System.Collections.ArrayList dic = new System.Collections.ArrayList();
68
69 foreach (DataRow dr in dtb.Rows)
70 {
71 System.Collections.Generic.Dictionary<string, object> drow = new System.Collections.Generic.Dictionary<string, object>();
72
73 foreach (DataColumn dc in dtb.Columns)
74 {
75 drow.Add(dc.ColumnName, dr[dc.ColumnName]);
76 }
77
78 dic.Add(drow);
79 }
80
81 return null;
82 }
83 #endregion
84
85 #region 将Dictionary转换为数据表数据 Tables
86 public static DataTable DictToDataTable(Dictionary<string, object> dict)
87 {
88 DataTable dt = new DataTable();
89
90 //dt.Columns.Add("ID", typeof(Guid));
91 //dt.Columns.Add("DID", typeof(string));
92 //dt.Columns.Add("DEPARTMENTNUM", typeof(string));
93 //dt.Columns.Add("DEPARTMENTNAME", typeof(string));
94 //dt.Columns.Add("REMARKS", typeof(string));
95
96 foreach (var colName in dict.Keys)
97 {
98 dt.Columns.Add(colName, typeof(string));
99 }
100 DataRow dr = dt.NewRow();
101 foreach (KeyValuePair<string, object> item in dict)
102 {
103 dr[item.Key] = item.Value;
104 }
105 dt.Rows.Add(dr);
106 return dt;
107 }
108 #endregion
109
110 #region 将List转换为数据表数据 Tables
111 /// <summary>
112 /// List转DataTable
113 /// </summary>
114 public static DataTable ListToDataTable<T>(List<T> list)
115 {
116 if (list == null || list.Count == 0)
117 {
118 return new DataTable();
119 }
120
121 //获取T下所有的属性
122 Type entityType = list[0].GetType();
123 PropertyInfo[] entityProperties = entityType.GetProperties();
124
125 DataTable dt = new DataTable("data");
126
127 for (int i = 0; i < entityProperties.Length; i++)
128 {
129 dt.Columns.Add(entityProperties[i].Name);
130 }
131
132 foreach (var item in list)
133 {
134 if (item.GetType() != entityType)
135 {
136 throw new Exception("要转换集合元素类型不一致!");
137 }
138 //创建一个用于放所有属性值的数组
139 object[] entityValues = new object[entityProperties.Length];
140 for (int i = 0; i < entityProperties.Length; i++)
141 {
142 entityValues[i] = entityProperties[i].GetValue(item, null);
143 }
144
145 dt.Rows.Add(entityValues);
146 }
147 return dt;
148 }
149 #endregion
150
151 #region Json 字符串 转换为 DataTable数据集合 简要版,正在使用中
152 /// <summary>
153 /// Json 字符串 转换为 DataTable数据集合 简要版,正在使用中
154 /// </summary>
155 /// <param name="json"></param>
156 /// <returns></returns>
157 ///
158 //格式;
159 //[{"mac":"20:f1:7c:c5:cd:80","rssi":"-86","ch":"9"},{"mac":"20:f1:7c:c5:cd:85","rssi":"-91","ch":"9"}]
160 public static DataTable ToDataTableTwo(string json)
161 {
162 DataTable dataTable = new DataTable(); //实例化
163 DataTable result;
164 try
165 {
166 List<Dictionary<string, object>> arrayList = JsonHelper.JSONToObject<List<Dictionary<string, object>>>(json);
167
168 if (arrayList != null && arrayList.Count > 0)
169 {
170 foreach (Dictionary<string, object> dictionary in arrayList)
171 {
172 if (dictionary.Keys.Count == 0)
173 {
174 result = dataTable;
175 return result;
176 }
177
178 //Columns
179 if (dataTable.Columns.Count == 0)
180 {
181 foreach (var current in dictionary)
182 {
183 if (current.Value != null)
184 {
185 dataTable.Columns.Add(current.Key, current.Value.GetType());
186 }
187 else
188 {
189 dataTable.Columns.Add(current.Key);
190 }
191 }
192 }
193
194 //Rows
195 DataRow dataRow = dataTable.NewRow();
196
197 foreach (string current in dictionary.Keys)
198 {
199 if (dictionary[current] != null)
200 {
201 dataRow[current] = dictionary[current];
202 }
203 }
204
205 dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
206 }
207 }
208 }
209 catch (Exception ex)
210 {
211 throw ex;
212 }
213
214 result = dataTable;
215 return result;
216 }
217 #endregion
C#DataTable(转List /JSON/字典 互转)的更多相关文章
- DataTable 和Json 字符串互转
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- 二:C#对象、集合、DataTable与Json内容互转示例;
导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型: 二:C#对象.集合.DataTable与Json内容互转示例: ...
- 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)
public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...
- Datatable转成Json方式两则
1, Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据 1.这里下载:http://www.newtonsoft.com/products/json/ ...
- LINQ查询返回DataTable类型[轉]與将DataTable序列化为Json格式【轉】
(原文地址:http://xuzhihong1987.blog.163.com/blog/static/26731587201101853740294/) LINQ查询返回DataTable类型 在使 ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- Datatable/Dataset 转 JSON方法
当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...
- DataTable转换成json字符串
将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...
- JSON格式互转集合
在工作中我们经常会遇到格式转换的问题,有的时候是将JSON转换成DataTable.DataSet或是List等,也有可能将DataTable.DataSet或是List转换成JSON的,抽了点时间把 ...
随机推荐
- Java读取txt文件、excel文件的方法
Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...
- OpenCvSharp的安装和使用
OpencvSharp是opencv的C#版本,使用习惯了opencv的人学起OpenCvSharp会很容易上手,看了网上很多的安装方式,最后我感觉还是自己去下载安装包的方式最简单,通过Nuget的方 ...
- c语言内存四区、数据存储范围和内存存储方向
(1)代码区通常是共享只读(代码无法修改)的,即可以被其他的程序调用,例如运行两个qq,除了数据不一样,代码都是一样的, 每次运行qq,都会将代码和数据加载到内存中,除了数据,每次加载的代码都是一样的 ...
- 搭建K8S集群前置条件
搭建K8S集群 搭建k8s环境平台规划 单master集群 单个master节点,然后管理多个node节点 多master集群 多个master节点,管理多个node节点,同时中间多了一个负载均衡的过 ...
- Linux内存泄露案例分析和内存管理分享
作者:李遵举 一.问题 近期我们运维同事接到线上LB(负载均衡)服务内存报警,运维同事反馈说LB集群有部分机器的内存使用率超过80%,有的甚至超过90%,而且内存使用率还再不停的增长.接到内存报警的消 ...
- phpword 模板文件导出word到服务器 并浏览器下载
模板文件填充 然后生成新文件 //调用PHPwordrequire_once(ROOTPATH . "inc/vendor/autoload.php"); $phpWord = n ...
- 【Devexpres】spreadsheetControl自动列宽
Worksheet worksheet = this.spreadsheetControl1.ActiveWorksheet; worksheet.Import(datatable, true, 0, ...
- pyinstaller 打包多个资源文件到一个可执行文件
前言 pyinstaller -w: 无终端状态 -F: 打包成一个可执行文件 开始 假设 main.py 脚本调用 test.mp4视频文件(main.py和test.mp4在同一级目录),那么将在 ...
- <十>关于菱形继承
代码1 #include <iostream> using namespace std; class A{ public: A(int _a):ma(_a){ cout<<&q ...
- day11 枚举类enum & 单例模式 & 异常以及抛出
day11 枚举enum 用enum关键字定义枚举类 特点 1.用enum关键字定义枚举类 2.枚举类默认继承java.lang.Enum类 3.枚举类的构造方法只能使用private修饰,省略则默认 ...