.NET基础架构方法—DataTableToList通用方法
2016-07-19 22:34
671 查看
.NET架构基础方法—DataTableToList通用方法
我们经常需要将从数据库中所读取的数据以DataTable类型返回,也经常需要遍历DataTable转换为List<T>。我们也经常需要为每一个DataTable转换为List单独编写适合他们数据库架构地方法。下面上代码:
代码中同样需要遍历DataTable,从而把DataTable中的每一行DataRow先转换为T类型的Model。在这里,我们根据每一行数据的数据架构来获取该行的每一列的ColumnName。我们也正是根据此ColumnName来获取泛型T的属性—GetModelPropertyInfo()方法,在其中通过SetValue设置该model的该属性值。也正是使用行数据架构的列属性名称来获取泛型T的属性,所以一定要保证泛型T的属性名称和数据架构名称相同,也只有这样才能使用该通用方法。
相信大牛们早已经掌握了这样的方法,如果有什么提议欢迎指出。如果你学会了,请为自己点赞,也是为我点赞。
我们经常需要将从数据库中所读取的数据以DataTable类型返回,也经常需要遍历DataTable转换为List<T>。我们也经常需要为每一个DataTable转换为List单独编写适合他们数据库架构地方法。下面上代码:
public static class DataTableTools<T> where T : class, new() { public static List<T> DataTableToList(DataTable dt) { List<T> list = null; var rowCount = dt.Rows.Count; if (rowCount > 0) { list = new List<T>(); int i; for (i = 0; i < rowCount; i++) { T model = DataRowToModel(dt.Rows[i]); list.Add(model); } } return list; } private static T DataRowToModel(DataRow dr) { T model = new T(); var propertiesCount = typeof(T).GetProperties().Length; for (int j = 0; j < propertiesCount; j++) { PropertyInfo propertyInfo = GetModelPropertyInfo(model, dr.Table.Columns[j]); if (propertyInfo != null && dr[j] != DBNull.Value) { propertyInfo.SetValue(model, dr[j]); } } return model; } private static PropertyInfo GetModelPropertyInfo(T model, DataColumn column) { string propertyName = column.ColumnName; return model.GetType().GetProperty(propertyName); } }
代码中同样需要遍历DataTable,从而把DataTable中的每一行DataRow先转换为T类型的Model。在这里,我们根据每一行数据的数据架构来获取该行的每一列的ColumnName。我们也正是根据此ColumnName来获取泛型T的属性—GetModelPropertyInfo()方法,在其中通过SetValue设置该model的该属性值。也正是使用行数据架构的列属性名称来获取泛型T的属性,所以一定要保证泛型T的属性名称和数据架构名称相同,也只有这样才能使用该通用方法。
相信大牛们早已经掌握了这样的方法,如果有什么提议欢迎指出。如果你学会了,请为自己点赞,也是为我点赞。
相关文章推荐
- 最详细的整个Spark运行时的内核架构以及架构思考
- 一个不错的html素材网站
- 各资源下载网站
- 大型网站架构演化发展历程
- 大型网站架构演化发展历程
- 解密 Uber 数据团队的基础数据架构优化之路
- android MVP 架构思路
- 常用参考网站
- 网站开发进阶(四十二)巧用clear:both
- 网站开发进阶(四十二)巧用clear:both
- Codis的架构设计
- 比较好的开发博客和网站(更新中。。。)
- 收藏qt学习的网站
- 微服务架构的分布式事务问题
- 资料网站收集
- web前端-二级分类菜单(类似购物网站)
- 网站的PV UV IP---网站常见软件性能
- 用Meta标签控制360浏览器默认极速模式打开自己的网站
- ROS学习之 roscpp内部架构概况
- solar常用网站