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

php中文网
发布: 2016-06-07 17:56:33
原创
1149人浏览过

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

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

背景:

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

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

真的好麻烦 (*=*)

思考:

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

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

实践:

酒店管理系统项目源码(三层开发)
酒店管理系统项目源码(三层开发)

系统采用VS2008+Sql2005开发适用于中小型的酒店管理,全部采用三层架构,ASP.NET开发,运用CSS加DIV的界面布局,完整的源代码和数据库设计,是你不可多得的参考资料。 有客房管理、房间类型管理、入住和退房管理等简单功能HotelManager为网站目录DB_51aspx下为Sql2005数据库,附加即可(Sql2000格式数据库转换后稍后发布)

酒店管理系统项目源码(三层开发) 0
查看详情 酒店管理系统项目源码(三层开发)

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

转换辅助类ConvertHelper代码如下:

ConvertHelper

转换辅助类 ConvertHelperwhere 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 ) 74 { ); 76 for (int j = 0; 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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号