...
【原】超简单类型转换(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
转换辅助类
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 )