php data类型转换,【原】超简单类型转换(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
转换辅助类ConvertHelperwhere T : new()6 {DataTable-->ListIListDataTableConvertToList(DataTable dt)13 {14
IListts = new List();Type type = typeof(T);创建类型的对象(用于比较用)20
//object convertObj = Activator.CreateInstance(type, null);反射取得类型实例的属性数组PropertyInfo[] propertys =type.GetProperties();(DataRow dr indt.Rows)27 {28
//创建类型的对象(用于赋值用)T outputObj = newT();(PropertyInfo pi inpropertys)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-->JsonDataTableConvertToJson(DataTable dt)66 {67
StringBuilder jsonBuilder = newStringBuilder();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-->JsonDataSetConvertToJson(DataSet ds)100 {101
StringBuilder json = newStringBuilder();(DataTable dt inds.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
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php data类型转换,【原】超简单类型转换(DataTable相关推荐
- 超简单,Python爬取阴阳师游戏原声
Python爬取阴阳师游戏BGM,附完整代码 爬取阴阳师游戏原声 网页分析 教程开始 1 请求json文件并获取数据 2 保存文件 注意,一定要看 结语 完整源码 目标网址:https://yys.1 ...
- 超简单,Python爬取阴阳师式神视频
Python爬取阴阳师官网式神CG,附完整代码 爬取阴阳师式神宣传CG 网页分析 教程开始 1 发送网页请求 使用第三方库requests来获取网页 使用BeautifulSoup解析网页 2 获取目 ...
- 关于显式类型转换以及隐式类型转换
哈喽嗷,铁汁们,咱们又见面了.是我嗷,一个不正经楼主. 首先提出一点,关于这个小细节专栏,看了绝对没好处(滑稽) 咳咳,咱们言归正传. 目录 隐式类型转换 ①算术运算中的隐式转换 规则一:字符和整数的 ...
- 超简单的图片爬取项目,复制粘贴就能用,批量爬取动漫图片。(保姆教程,可根据需要修改URL)
各位未来国家栋梁们好啊~相信栋梁们经常需要在网络上寻找各种资源,作为二次元的必备精神食粮,图片资源那是必不可少!在这里用python写了一个超简单的图片爬取小项目~话不多说,附上源码!(有用的话点个赞 ...
- 超详细超简单的搭建三台虚拟机集群
1.vm虚拟机配置 宿主机:真机 NAT模式:(VM虚拟机里面设置) 查看:你的NAT网段和网关是多少? 网段:192.168.136.0/24 网关:192.168.136.2 我的规划: NN1 ...
- 小程序公共封装ajax,超简单 Promise封装小程序ajax 超好用 以及封装登录
//网络类 //封装网络请求 const ajax = (ajaxData, method) => { wx.showLoading({ title: '加载中', mask: true }); ...
- ASP.NET中一种超简单的Ajax解决方案
为什么是Ajax2? 因为之前有一个blqw.Ajax,并且已经在项目中投入使用了,但是没有这个方便,这个是后来才弄的,为了纪念第一版的blqw.Ajax,所以这个就2了... 话说看了评论才发现,原 ...
- 用python实现视频换脸_超简单使用Python换脸实例
换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...
- 基于vue-cli、elementUI的Vue超简单入门小例子
基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...
最新文章
- 途牛自营门市超500家 单笔订单交易额最高近300万元
- vmware虚拟机中ubuntu上网问题
- 云数据库精华问答 | 现有数据库优化到云环境有什么好处​?
- strocli64 源码_storcli 简易使用介绍
- CoreGraphics之CGContextSaveGState与UIGraphicsPushContext
- mysql cnf参数_系统运维|MySQL my.cnf参数配置优化详解
- 进阶12 多线程、等待唤醒机制、线程池
- [转载]函数getopt(),及其参数optind
- 【P20】PCM1794全平衡解码模块电路
- JBOSS的下载安装、环境变量配置以及部署
- winrar的破解激活
- 第五次打卡 模型融合
- govendor使用及错误处理
- 游戏服务器为什么要选择高防服务器
- 在线制作数据库ER模型
- linux mysql insert into_MySQL的INSERT语句小结
- 常用颜色及其RGB值
- 语音识别——麦克风选型
- 输油管道监测解决方案
- Andorid IData95手持设备开发过程