欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2024-02-05 13:48:04
...

【原】超简单类型转换(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类,感谢各位前辈 ^_^

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

转换辅助类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 )