C#DataTable(转List /JSON/字典 互转)-C/S开发框架
#region 数据表DataTable 转键值对集合 List
/// <summary>
/// 数据表DataTable 转键值对集合 List
/// 把DataTable转成 List集合, 存每一行
/// 集合中放的是键值对字典,存每一列
/// </summary>
/// <param name="dt">数据表</param>
/// <returns>哈希表数组</returns>
public static List<Dictionary<string, object>> DataTableToList(DataTable dt)
{
List<Dictionary<string, object>> list
= new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
dic.Add(dc.ColumnName, dr[dc.ColumnName]);
}
list.Add(dic);
}
return list;
}
#endregion
#region 数据集转键值对数组字典
/// <summary>
/// 数据集转键值对数组字典
/// </summary>
/// <param name="dataSet">数据集</param>
/// <returns>键值对数组字典</returns>
public static Dictionary<string, List<Dictionary<string, object>>> DataSetToDic(DataSet ds)
{
Dictionary<string, List<Dictionary<string, object>>> result = new Dictionary<string, List<Dictionary<string, object>>>();
foreach (DataTable dt in ds.Tables)
result.Add(dt.TableName, DataTableToList(dt));
return result;
}
#endregion
#region 数据表Tables 转JSON
/// <summary>
/// 数据表转Tables JSON
/// </summary>
/// <param name="dataTable">数据表</param>
/// <returns>JSON字符串</returns>
public static string DataTableToJSON(DataTable dt)
{
return JsonHelper.ObjectToJSON(DataTableToList(dt));
}
#endregion
#region 将datatable转换为json
/// <summary>
/// 将datatable转换为json
/// </summary>
/// <param name="dtb">Dt</param>
/// <returns>JSON字符串</returns>
public static string Dtb2Json(DataTable dtb)
{
//JavaScriptSerializer jss = new JavaScriptSerializer();
System.Collections.ArrayList dic = new System.Collections.ArrayList();
foreach (DataRow dr in dtb.Rows)
{
System.Collections.Generic.Dictionary<string, object> drow = new System.Collections.Generic.Dictionary<string, object>();
foreach (DataColumn dc in dtb.Columns)
{
drow.Add(dc.ColumnName, dr[dc.ColumnName]);
}
dic.Add(drow);
}
return null;
}
#endregion
#region 将Dictionary转换为数据表数据 Tables
public static DataTable DictToDataTable(Dictionary<string, object> dict)
{
DataTable dt = new DataTable();
//dt.Columns.Add("ID", typeof(Guid));
//dt.Columns.Add("DID", typeof(string));
//dt.Columns.Add("DEPARTMENTNUM", typeof(string));
//dt.Columns.Add("DEPARTMENTNAME", typeof(string));
//dt.Columns.Add("REMARKS", typeof(string));
foreach (var colName in dict.Keys)
{
dt.Columns.Add(colName, typeof(string));
}
DataRow dr = dt.NewRow();
foreach (KeyValuePair<string, object> item in dict)
{
dr[item.Key] = item.Value;
}
dt.Rows.Add(dr);
return dt;
}
#endregion
#region 将List转换为数据表数据 Tables
/// <summary>
/// List转DataTable
/// </summary>
public static DataTable ListToDataTable<T>(List<T> list)
{
if (list == null || list.Count == 0)
{
return new DataTable();
}
//获取T下所有的属性
Type entityType = list[0].GetType();
PropertyInfo[] entityProperties = entityType.GetProperties();
DataTable dt = new DataTable("data");
for (int i = 0; i < entityProperties.Length; i++)
{
dt.Columns.Add(entityProperties[i].Name);
}
foreach (var item in list)
{
if (item.GetType() != entityType)
{
throw new Exception("要转换集合元素类型不一致!");
}
//创建一个用于放所有属性值的数组
object[] entityValues = new object[entityProperties.Length];
for (int i = 0; i < entityProperties.Length; i++)
{
entityValues[i] = entityProperties[i].GetValue(item, null);
}
dt.Rows.Add(entityValues);
}
return dt;
}
#endregion
#region Json 字符串 转换为 DataTable数据集合 简要版,正在使用中
/// <summary>
/// Json 字符串 转换为 DataTable数据集合 简要版,正在使用中
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
///
//格式;
//[{"mac":"20:f1:7c:c5:cd:80","rssi":"-86","ch":"9"},{"mac":"20:f1:7c:c5:cd:85","rssi":"-91","ch":"9"}]
public static DataTable ToDataTableTwo(string json)
{
DataTable dataTable = new DataTable(); //实例化
DataTable result;
try
{
List<Dictionary<string, object>> arrayList = JsonHelper.JSONToObject<List<Dictionary<string, object>>>(json);
if (arrayList != null && arrayList.Count > 0)
{
foreach (Dictionary<string, object> dictionary in arrayList)
{
if (dictionary.Keys.Count == 0)
{
result = dataTable;
return result;
}
//Columns
if (dataTable.Columns.Count == 0)
{
foreach (var current in dictionary)
{
if (current.Value != null)
{
dataTable.Columns.Add(current.Key, current.Value.GetType());
}
else
{
dataTable.Columns.Add(current.Key);
}
}
}
//Rows
DataRow dataRow = dataTable.NewRow();
foreach (string current in dictionary.Keys)
{
if (dictionary[current] != null)
{
dataRow[current] = dictionary[current];
}
}
dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
}
}
}
catch (Exception ex)
{
throw ex;
}
result = dataTable;
return result;
}
#endregion
参考文档:
FastReport.NET 2023使用DataTable报表数据源配置JsonDataSourceConnection连接|C/S开发框架
C# DataTable与XML互转|C/S开发框架
C# DataSet与XML互转|C/S开发框架
扩展按钮功能:数据字典窗体复制记录单据数据 | CSFrameworkV5旗舰版开发指南|C/S开发框架
WinFramework轻量级开发框架 | 公共字典数据扩展|C/S开发框架
C#使用Newtonsoft.Json.dll解析Json数据-C/S开发框架
C/S开发框架教程:使用基础资料(数据字典)的DAL层更新主从表(或多表)数据
C#统计List 字符串属性长度(返回每个属性的最大长度)|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置MsSqlDataConnection连接|C/S开发框架
.NETCore WebApi框架:从appsettings.json 读取参数配置|C/S开发框架
使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
DataGridView绑定List 对象,偶尔出现索引 |1 没有值|C/S开发框架
C/S快速开发框架旗舰版 | 数据字典模块主界面|软件手册
四.数据字典窗体开发步骤|基础资料窗体|C/S快速开发框架|标准版V2.3|软件手册
三.数据字典窗体实现及逻辑关系图|基础资料窗体|C/S快速开发框架|标准版V2.3|软件手册
二.数据字典窗体继承关系图|基础资料窗体|C/S快速开发框架|标准版V2.3|软件手册
FastReport.NET 2023使用DataTable报表数据源配置JsonDataSourceConnection连接|C/S开发框架
C# DataTable与XML互转|C/S开发框架
C# DataSet与XML互转|C/S开发框架
扩展按钮功能:数据字典窗体复制记录单据数据 | CSFrameworkV5旗舰版开发指南|C/S开发框架
WinFramework轻量级开发框架 | 公共字典数据扩展|C/S开发框架
C#使用Newtonsoft.Json.dll解析Json数据-C/S开发框架
C/S开发框架教程:使用基础资料(数据字典)的DAL层更新主从表(或多表)数据
C#统计List 字符串属性长度(返回每个属性的最大长度)|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置MsSqlDataConnection连接|C/S开发框架
.NETCore WebApi框架:从appsettings.json 读取参数配置|C/S开发框架
使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
DataGridView绑定List 对象,偶尔出现索引 |1 没有值|C/S开发框架
C/S快速开发框架旗舰版 | 数据字典模块主界面|软件手册
四.数据字典窗体开发步骤|基础资料窗体|C/S快速开发框架|标准版V2.3|软件手册
三.数据字典窗体实现及逻辑关系图|基础资料窗体|C/S快速开发框架|标准版V2.3|软件手册
二.数据字典窗体继承关系图|基础资料窗体|C/S快速开发框架|标准版V2.3|软件手册
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
