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安全之反序列化(1)
序列化与反序列化 概述 Java序列化是指把Java对象转换为字节序列的过程:这串字符可能被储存/发送到任何需要的位置,在适当的时候,再将它转回原本的 Java 对象,而Java反序列化是指把字节序列 ...
- day15-Servlet04
Servlet04 12.ServletConfig 12.1ServletConfig基本介绍 ServletConfig类是为Servlet程序配置信息的类 Servlet对象和ServletCo ...
- 幂次方表达:p1010
1 题目ID: P1010 [NOIP1998 普及组] 幂次方 2 题目描述: 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方 ...
- MongoDB - 入门指南
组件结构 核心进程 在 MongoDB 中,核心进程主要包含了 mongod.mongos 和 mongosh 三个. 其中最主要的是 mongod 程序,其在不同的部署方案中(单机部署.副本集部署. ...
- DHorse系列文章之镜像制作
DHorse系列文章之镜像制作 制作镜像常用的工具 使用Docker制作镜像 1.使用docker commit制作 该命令使用比较简单,可以自行网上搜索教程. 2.使用Dockerfile制作 这种 ...
- TortoiseGit间接处理linux目录下的仓库,用到window映射linux目录方案
原始需求 习惯用TortoiseGit查看git仓库信息和历史日志,但这个工具只支持window,我希望linux也能用 虽然有其他linux的GUI的git工具,但我用到的linux基本都是无界面版 ...
- HDLBits答案——Verilog Language
Verilog Language 1 Basics 1.1 Wire module top_module( input in, output out ); assign out = in; endmo ...
- __init__、__all__
在python中 引用模块包的时候,要先进入此模块的__init__.py中畅游一遍,因此,我们多次需要一个语句的时候,就可以将这些语句写入到__init__.py中: 在使用*号的时候我们可以用__ ...
- warning: ‘setAxisX‘ is deprecated
解决 将 chart->setAxisX(valueAxisX,lineSeries); 改为: chart->addSeries(lineSeries); chart->creat ...
- java 定时开始执行程序
package com.zx.ps.web.gzdb; import java.util.Calendar; import java.util.Date; import java.util.Timer ...