代码类

 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. 中交兴路完成7亿元A轮融资,携手蚂蚁金服共建小微物流科技服务生态
  2. MongoDB的安装及基本命令和pymongo的使用
  3. 如何使得自己的Python程序每行长度小于80个字符?
  4. redis学习之redis基本数据类型以及Jedis
  5. FLEX中的MDI窗口包--flexmdi
  6. mendelay为什么安装不了_你为什么消防验收过不了?消防管道安装错误图集
  7. win10硬盘修复工具使用教程
  8. 3种类型的程序员:“虫族”,“人族”,“神族”(转载)
  9. java script 月日年转年月日_javasrcipt日期一些方法和格式转化
  10. python代码命令行tab补齐_Python语言交互模式下命令tab补全
  11. 仿 vue-cli 搭建属于自己的脚手架
  12. 如何配置 strongSwan 客户端 -- 节选自 OpenSuSE 中文用户手册
  13. 深入解读Linux内存管理系列(1)——系统启动阶段的操作
  14. 计算机科学导论内容大纲,《计算机科学导论》大纲
  15. vue3快速上手(尚硅谷视频笔记)
  16. 计算机实验室安全知识心得体会,实验室安全知识宣传
  17. 戴顿大学计算机科学,(出国) 2015年 清北 上海交大浙大复旦中科南大 世界TOP30高校 官方数据...
  18. 冒泡排序python_冒出来是什么意思
  19. HSL、RGB颜色转换
  20. 个人项目总结---微信扫描二维码强制群发

热门文章

  1. ARP局域网断网攻击原理分析及演示
  2. C++函数声明和函数定义
  3. questasim的傻瓜式安装与仿真教程
  4. 计算机从图灵到冯诺依曼,电脑是谁发明的 冯·诺依曼和图灵(两人都起到了重要作用)...
  5. 超级解霸害死人——安装evc过程种出现“没有文件扩展.vbs的脚本引擎”的问题...
  6. Matlab 字符串时间戳转化为数值(以秒或毫秒为单位)
  7. Pytorch - Illegal instruction
  8. PostgreSQL 的安装以及在安装过程中遇到的问题及解决方法
  9. 大数据分析练习-第八届泰迪杯A题-基于数据挖掘的上市公司高送转预测
  10. java就是我的幸福,我的幸福我的人生