博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataTable转实体类
阅读量:7070 次
发布时间:2019-06-28

本文共 3320 字,大约阅读时间需要 11 分钟。

///     /// DataTable与实体类互相转换    ///     /// 
实体类
public class ModelHandler
where T : new() { #region DataTable转换成实体类 ///
/// 填充对象列表:用DataSet的第一个表填充实体类 /// ///
DataSet ///
public List
FillModel(DataSet ds) { if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0) { return null; } else { return FillModel(ds.Tables[0]); } } ///
/// 填充对象列表:用DataSet的第index个表填充实体类 /// public List
FillModel(DataSet ds, int index) { if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0) { return null; } else { return FillModel(ds.Tables[index]); } } ///
/// 填充对象列表:用DataTable填充实体类 /// public List
FillModel(DataTable dt) { if (dt == null || dt.Rows.Count == 0) { return null; } List
modelList = new List
(); foreach (DataRow dr in dt.Rows) { //T model = (T)Activator.CreateInstance(typeof(T)); T model = new T(); for (int i = 0; i < dr.Table.Columns.Count; i++) { PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName); if (propertyInfo != null && dr[i] != DBNull.Value) propertyInfo.SetValue(model, dr[i], null); } modelList.Add(model); } return modelList; } ///
/// 填充对象:用DataRow填充实体类 /// public T FillModel(DataRow dr) { if (dr == null) { return default(T); } //T model = (T)Activator.CreateInstance(typeof(T)); T model = new T(); for (int i = 0; i < dr.Table.Columns.Count; i++) { PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName); if (propertyInfo != null && dr[i] != DBNull.Value) propertyInfo.SetValue(model, dr[i], null); } return model; } #endregion #region 实体类转换成DataTable ///
/// 实体类转换成DataSet /// ///
实体类列表 ///
public DataSet FillDataSet(List
modelList) { if (modelList == null || modelList.Count == 0) { return null; } else { DataSet ds = new DataSet(); ds.Tables.Add(FillDataTable(modelList)); return ds; } } ///
/// 实体类转换成DataTable /// ///
实体类列表 ///
public DataTable FillDataTable(List
modelList) { if (modelList == null || modelList.Count == 0) { return null; } DataTable dt = CreateData(modelList[0]); foreach (T model in modelList) { DataRow dataRow = dt.NewRow(); foreach (PropertyInfo propertyInfo in typeof(T).GetProperties()) { object drValue = propertyInfo.GetValue(model, null); dataRow[propertyInfo.Name] = drValue == null ? DBNull.Value : drValue; } dt.Rows.Add(dataRow); } return dt; } ///
/// 根据实体类得到表结构 /// ///
实体类 ///
private DataTable CreateData(T model) { DataTable dataTable = new DataTable(typeof(T).Name); foreach (PropertyInfo propertyInfo in typeof(T).GetProperties()) { dataTable.Columns.Add(new DataColumn(propertyInfo.Name, Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType)); } return dataTable; } #endregion }

  

转载于:https://www.cnblogs.com/XuPengLB/p/10172439.html

你可能感兴趣的文章
oracle长连接超时设置
查看>>
使用vmstat命令监视系统内存--用Enki学Linux系列(14)
查看>>
MyDNS安装
查看>>
MySQL 5.7数据库可以用任意IP连接访问
查看>>
SCCM TP4部署Office2013之OCT设置
查看>>
redmine服务器迁移
查看>>
我的友情链接
查看>>
Python创建单例模式的三种方式
查看>>
man手册
查看>>
maven的中国repository镜像
查看>>
每天进步一点
查看>>
Yii2如何用migrate快速建表
查看>>
Ruby缺失的define_class
查看>>
root用户允许远程登录数据库
查看>>
【PYB Nano】用定位器控制LED亮度
查看>>
通过广播Intent控制Android系统自带的音乐播放器
查看>>
VS2010使用静态编译的qt库
查看>>
vim
查看>>
阿兰•图灵与人工智能
查看>>
操作系统简单快捷安装方式
查看>>