代码类

 public partial class ZConvert{/// <summary>/// 转换 DataTable 对象为 IList 对象/// </summary>/// <param name="datas">数据集合</param>/// <returns>数组对象</returns>public static T[] ToArray<T>(DataTable datas)where T : class, new(){List<T> list = ToList<T>(datas) as List<T>;return list.ToArray();}/// <summary>/// 转换IList对象为DataTable对象/// </summary>/// <param name="datas">数据集合</param>/// <returns>DataTable对象</returns>public static DataTable ToDataTable<T>(IList<T> datas){return ToDataTable<T>(datas, null);}/// <summary>/// 转换IList对象为DataTable对象/// </summary>/// <param name="datas">数据集合</param>/// <returns>DataTable对象</returns>public static DataTable ToDataTable<T>(T[] datas){return ToDataTable<T>(datas, null);}/// <summary>/// 转换IList对象为DataTable对象/// </summary>/// <param name="datas">数据集合</param>/// <param name="tableName">要创建的表名</param>/// <returns>DataTable对象</returns>public static DataTable ToDataTable<T>(IList<T> datas, string tableName){Type type = typeof(T);if (string.IsNullOrEmpty(tableName)){tableName = type.Name;}DataTable table = new DataTable(tableName);table.BeginLoadData();PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);foreach (PropertyInfo info in properties){string typeName = info.PropertyType.ToString();if (info.PropertyType.IsGenericType){typeName = info.PropertyType.GetGenericArguments()[0].ToString();}Type type2 = Type.GetType(typeName, false);if (type2 != null){table.Columns.Add(info.Name, type2);}}if ((datas != null) && (datas.Count > 0)){foreach (object obj2 in datas){DataRow row = table.NewRow();foreach (PropertyInfo info2 in properties){if ((Type.GetType(info2.PropertyType.ToString(), false) != null) && (info2.GetValue(obj2, null) != null)){row[info2.Name] = info2.GetValue(obj2, null);}}table.Rows.Add(row);}}table.EndLoadData();table.AcceptChanges();return table;}/// <summary>/// 转换IList对象为DataTable对象/// </summary>/// <param name="datas">数据集合</param>/// <param name="tableName">要创建的表名</param>/// <returns>DataTable对象</returns>public static DataTable ToDataTable<T>(T[] datas, string tableName){IList<T> list;if ((datas == null) || (datas.Length == 0)){list = new List<T>();}else{list = new List<T>(datas);}return ToDataTable<T>(list, tableName);}/// <summary>/// 转换 DataTable 对象为 IList 对象/// </summary>/// <param name="datas">数据集合</param>/// <returns>IList 对象</returns>public static IList<T> ToList<T>(DataTable datas) where T : class, new(){IList<T> list = new List<T>();if ((datas != null) && (datas.Rows.Count != 0)){PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);foreach (DataRow row in datas.Rows){T local = Activator.CreateInstance<T>();foreach (DataColumn column in datas.Columns){object obj2 = null;if (row.RowState == DataRowState.Deleted){obj2 = row[column, DataRowVersion.Original];}else{obj2 = row[column];}if (obj2 != DBNull.Value){foreach (PropertyInfo info in properties){if (column.ColumnName.Equals(info.Name, StringComparison.CurrentCultureIgnoreCase)){info.SetValue(local, obj2, null);}}}}list.Add(local);}}return list;}}
IList和List在效率方面有些差异,IList通过接口实现,可以修改为List

C#,.net将DataTable转为对应的Model实体类相关推荐

  1. 使用myeclipse创建带注解的model实体类

    使用myeclipse创建带注解的model实体类 1.先新建JPA项目: 如果没有就点击左下角的Show All Wizards. 点两次Next后,点击Finish即可,中间不用任何操作 (点第二 ...

  2. 【小5聊】C# Json字符串转Model实体类以及Model实体类转Json字符串

    1.引用DLL:Newtonsoft.Json.dll 引用自己项目兼容的dll版本安装 2.Json字符串转Model实体类 UserInfoModel model = new UserInfoMo ...

  3. 使用反射将DataTable的数据转成实体类

    利用反射避免了硬编码出现的错误,但是实体类的属性名必须和数据库名字对应(相同) 1.利用反射把DataTable的数据写到单个实体类 /// <summary>///利用反射把DataTa ...

  4. idea中自动生成model实体类

    进入generatorConfig.xml, 目录如下. xml文件内容如下,有几个注意点. <?xml version="1.0" encoding="UTF-8 ...

  5. 【转】DataTable与实体类互相转换

    原文地址:https://www.cnblogs.com/marblemm/p/7084797.html /// <summary>/// DataTable与实体类互相转换/// < ...

  6. C#利用反射将实体类ListT转化为Datatable

    背景介绍 C#中实体类的操作十分简便,一般情况下不需要涉及ADO.NET,如果需要将实体类转化为Datatable,这个时候就需要手动写一个方法了,代码如下图所示: public static cla ...

  7. C#利用反射将Datatable转化为指定实体类ListT

    背景介绍 在软件开发中肯定免不了和数据库打交道,我们对数据的增删改查最终会转化为SQL在数据库中执行.从SQLServer中查出数据一般有两种方式:一是ADO.NET直接写SQL语句从数据中查出数据, ...

  8. Datatable转为ListT / DataRow转为实体类对象

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...

  9. 解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题

    解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题 问题描述 springboot 在配置jpa时,利用idea自带工具逆向工程生成实体类,结果在调用findOne的时候,报 ...

最新文章

  1. 优秀的 Java 项目是如何分层的?
  2. npm run build生成路径问题
  3. sql 基础--mysql 5 (8)
  4. python box2d_win10+Anaconda3成功使用pip安装Box2d
  5. numpy学习4:NumPy基本操作
  6. 汇编解析(1)-内存寻址之实模型平面模式(real mode flat mode)(1)
  7. 让同步函数同步执行,异步函数异步执行,并且让它们具有统一的 API
  8. [转]JS导出PDF
  9. js 字符串插入_前端利器React,为什么推荐JSX来替换JS
  10. java响应式网页设计_基于HTML5的响应式网站的设计与实现(论文).docx
  11. 推荐几个在大厂996,却一心想要按时下班的公众号主和他们的工作(摸鱼)心得...
  12. .md文件的打开与软件---markdown
  13. 通过Unity预编译文件smcs.rsp文件添加预编译命令
  14. spring+vue前后端端分离上传图片到后台静态资源目录(适合个人小项目)
  15. 周四见-王晓伟 |MySQL与数据仓库的数据交互
  16. 软件配置 | pip下载第三方库文件及配置pip源的不完全总结
  17. TexturePacker破解版
  18. ZUCC_BB平台-Quiz B-3-7-答案
  19. 2017 云+未来峰会——上海站开发者专场即将开讲(30元电话充值卡等你拿)
  20. clinvar数据库简介

热门文章

  1. 14个小方法巧除鞋臭脚臭
  2. 什么是域名到期?域名到期抢注要怎么进行?
  3. java 私有全局变量_java中的全局变量
  4. python练习题:英汉字典
  5. 零点和极点的物理意义
  6. flowable exception during resetting expired jobs: Could not open JDBC Connection for transaction
  7. Swift中什么时候不能用 () 代替 Void 来使用
  8. ICCV2017跟踪算法BACF原理及代码解析
  9. 一阶常微分方程的数值解法(二阶显式、隐式 Adams 公式及 Milne 方法)
  10. shell脚本打印出时间