• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 【原】超简单类型转换(DataTable

【原】超简单类型转换(DataTable

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了简单,类型,转换,DataTable等相关知识,希望本文的分享对您有所帮助

【原】超简单类型转换(DataTable -- List/JSON)的实现 背景: 开发工作中经常需要类型的转换,比如DataTable转换为List、或是DataTable转换为JSON等等, 每次都重复的写相同的代码,比如:把实体类的字段属性一个一个的列出来,从DataTabel中把值取出来赋

【原】超简单类型转换(DataTable --> List/JSON)的实现

背景:

开发工作中经常需要类型的转换,比如DataTable转换为List、或是DataTable转换为JSON等等,

每次都重复的写相同的代码,比如:把实体类的字段属性一个一个的列出来,从DataTabel中把值取出来赋上,

真的好麻烦 (*=*)

思考:

1)DataTable转换为List,香港空间,主要是使用反射,遍历实体类的属性,和DataTabel中的列进行对比并赋值

2)DataTable转换为JSON,主要是拼接JSON串

实践:

参考了网上很多前辈的思路和实现,制作了一个ConvertHelper类,感谢各位前辈 ^_^

转换辅助类ConvertHelper代码如下:

ConvertHelper

转换辅助类 ConvertHelper where T : new() 6 { DataTable-->List IList DataTableConvertToList(DataTable dt) 13 { 14 IList ts = new List(); Type type = typeof(T); 创建类型的对象(用于比较用) 20 //object convertObj = Activator.CreateInstance(type, null); 反射取得类型实例的属性数组 PropertyInfo[] propertys = type.GetProperties(); (DataRow dr in dt.Rows) 27 { 28 // 创建类型的对象(用于赋值用) T outputObj = new T(); (PropertyInfo pi in propertys) 33 { (dt.Columns.Contains(pi.Name)) 36 { 37 if (!pi.CanWrite) 38 { 39 continue; 40 } value = dr[pi.Name]; (value != DBNull.Value) 46 { pi.SetValue(outputObj, value, null); 49 } 50 } 51 } ts.Add((T)outputObj); 55 } ts; 58 } DataTable-->Json DataTableConvertToJson(DataTable dt) 66 { 67 StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append(); 71 jsonBuilder.Append(dt.TableName); ); 73 for (int i = 0; i < dt.Rows.Count; i++) 74 { ); 76 for (int j = 0; j < dt.Columns.Count; j++) 77 { ); 79 jsonBuilder.Append(dt.Columns[j].ColumnName); ); 81 jsonBuilder.Append(dt.Rows[i][j].ToString()); ); 83 } 84 jsonBuilder.Remove(jsonBuilder.Length - 1, 1); ); 86 } 87 jsonBuilder.Remove(jsonBuilder.Length - 1, 1); ); ); jsonBuilder.ToString(); 92 } DataSet-->Json DataSetConvertToJson(DataSet ds) 100 { 101 StringBuilder json = new StringBuilder(); (DataTable dt in ds.Tables) 104 { json.Append(); 107 json.Append(dt.TableName); ); 109 json.Append(DataTableConvertToJson(dt)); ); 111 } json.ToString(); 114 } 115 }

如何使用呢?

很方便的,先定义一个实体类UserInfo

UserInfo

1 ///

2 /// 用户信息实体 3 /// 4 public class UserInfo 5 { 6 /// 7 /// 用户编号 8 /// 9 public int UserID { get; set; } 10 11 /// 12 /// 用户姓名 13 /// 14 public string UserName { get; set; } 15 16 /// 17 /// 用户薪资 18 /// 19 public decimal Salary { get; set; } 20 }

再定义一个方法填充一些数据模拟DataTable

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySql官方手册学习笔记1 MySql简单上手
  • Mysql中的ip地址存储简单介绍
  • 完美解析SQL只需要简单的十个步骤
  • 史上最简单的MySQL数据备份与还原教程
  • MySQL存储过程和事务的简单介绍
  • Mysql的编译安装以及简单介绍
  • MySQL在linux下最简单的安装方法
  • MySQL数据库查询基础,简单查询,条件查询,对查询结果排序
  • sql注入的相关简单实例
  • php 生成静态HTML页面最简单的方法示例

相关文章

  • 2017-05-11Ubuntu下完美实现迁移MySQL数据库位置
  • 2018-12-05Oracle 10G:PL/SQL正规表达式(正则表达式)手册
  • 2018-12-05 Mysql系列(七)存储过程
  • 2018-12-05MySQL解压包的安装与下载的图文教程
  • 2018-12-05BCP 大容量数据导入导出工具使用步骤
  • 2018-12-05在 SQLSERVER 中快速有条件删除海量数据
  • 2017-05-11phpmyadmin中为站点设置mysql权限的图文方法
  • 2018-12-05mysql如何删除表中的重复行并保留id较小(或者较大)的记录
  • 2018-12-05详细介绍Mysql数据库表定期备份实现的示例代码
  • 2018-12-058 个不得不说的 MySQL 陷阱

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql 常用设置 字符集编码、自动完成(自动提示)、监听外网ip
    • 【mysql教程】MySQL 处理重复数据
    • 有关创建、选择的相关推荐
    • 深入研究mysql中的varchar和limit(容易被忽略的知识)
    • Oracle数据库安全策略分析(一)第1/2页
    • Mysql5.7出现group by查询问题的解决办法分享
    • SQL Server 数据库备份和还原认识和总结 (一)
    • MySQL高级五——存储过程的管理
    • Oracle 忘记密码的找回方法
    • MySQL修改配置 区分大小写

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有