DataTable到实体类的转换
来源:互联网 发布:淘宝怎么申请部分退款 编辑:程序博客网 时间:2024/06/05 08:58
搞软件差不多的都知道,经常用到DataTable到实体类的转换,常用的就是利用列名或索引一列一列给实体赋值,如果列少还行,列多的话,真是烦死人,而且容易出错.偶也常被困扰.早就写这样的方法.却一直没有时间,前几天忙里偷闲,参考一些资料,改编了别人的一些方法,现分享如下:
1.DataTable到List<T>的转换
public static List<T> DataTableToT<T>(DataTable source) where T : class, new()
{
List<T> itemlist = null;
if (source == null || source.Rows.Count == 0)
{
return itemlist;
}
itemlist = new List<T>();
T item = null;
Type targettype = typeof(T);
Type ptype = null;
Object value = null;
foreach (DataRow dr in source.Rows)
{
item = new T();
foreach (PropertyInfo pi in targettype.GetProperties())
{
if (pi.CanWrite && source.Columns.Contains(pi.Name))
{
ptype = Type.GetType(pi.PropertyType.FullName);
value = Convert.ChangeType(dr[pi.Name], ptype);
pi.SetValue(item, value, null);
}
}
itemlist.Add(item);
}
return itemlist;
}
2.DataRow到T的转换
public static T DataRowToT<T>(DataRow source) where T:class,new()
{
T item = null;
if (source == null)
{
return item;
}
item = new T();
Type targettype = typeof(T);
Type ptype = null;
Object value = null;
foreach (PropertyInfo pi in targettype.GetProperties())
{
if (pi.CanWrite && source.Table.Columns.Contains(pi.Name))
{
ptype = Type.GetType(pi.PropertyType.FullName);
value = Convert.ChangeType(source[pi.Name], ptype);
pi.SetValue(item, value, null);
}
}
return item;
}
备注:1.里面用到了反射与泛型,而且都是最入门级的.不再做详解
转自:http://www.cnblogs.com/liangjie/archive/2011/09/28/2193850.html
- DataTable到实体类的转换
- 反射技术实现DataTable到实体类的赋值操作
- 泛型加反射 DataTable转换成实体类
- DataTable与实体类互相转换
- DataTable与实体类互相转换
- DataTable如何转换为实体类
- 使用反射机制实现实体列表到DataTable的深层字段转换
- 实体数组转换成DataTable
- 将实体DATATABLE进行转换
- DataTable数据转换为实体
- DataTable数据转换为实体
- C# 实体转换为DataTable
- 多年前写的DataTable与实体类的转换,已放github
- 根据反射将数据库查询结果Datatable,转换为对应的Model类实体对象
- 将实体转换成具有相同结构的DataTable
- 把企业库返回的DataTable转换成实体列表
- c# 把企业库返回的DataTable转换成实体列表
- 把实体类数据的字段名和值填充到DataTable里
- android Smart Bar遮盖住底部布局问题解决方案
- 超级简单:ASP.NET Localization (本地化,多语言)
- Storm的ACK机制与编码实例
- UpdatePanel 中js失效问题
- .net验证码生成及使用
- DataTable到实体类的转换
- Lesson 4 Nehe
- global.asax中对不同页面的访问控制的基础--Application_PreRequestHandlerExecute
- Python中re(正则表达式)模块学习
- C#语法小知识(十六)序列化与反序列化(XML)
- thinkphp5 执行流程分析
- ASP.NET 回发密码框清空问题处理方法
- AJAX使用了UpdatePanel后无法使用alert弹出脚本
- C#后台post数据到指定页面并获取返回值