常用方法 DataTable转换为Entitys
备注:摘自网上 有附地址
- public static List<T> DataTableToEntities<T>(this DataTable dt) where T : class, new()
- {
- if (null == dt || dt.Rows.Count == ) { return null; }
- List<T> entities = new List<T>();
- List<string> columnNames = new List<string>();
- for (int i = ; i < dt.Columns.Count; i++)
- {
- columnNames.Add(dt.Columns[i].ColumnName);
- }
- foreach (DataRow row in dt.Rows)
- {
- PropertyInfo[] pArray = typeof(T).GetProperties();
- T entity = new T();
- Array.ForEach<PropertyInfo>(pArray, p =>
- {
- if (!columnNames.Contains(p.Name))
- {
- return;
- }
- object cellvalue = row[p.Name];
- //空值不处理
- if (cellvalue == DBNull.Value)
- {
- return;
- }
- if ((cellvalue == null) || string.IsNullOrWhiteSpace(cellvalue.ToString().Trim()))
- {
- return;
- }
- if (cellvalue != DBNull.Value)
- {
- //经过了几个版本的迭代,最后一个为最新的,摘自网上,已附原文地址
- //4、原地址:https://blog.csdn.net/Simon1003/article/details/80839744
- if (!p.PropertyType.IsGenericType)
- {
- p.SetValue(entity, Convert.ChangeType(cellvalue, p.PropertyType), null);
- }
- else
- {
- Type genericTypeDefinition = p.PropertyType.GetGenericTypeDefinition();
- if (genericTypeDefinition == typeof(Nullable<>))
- {
- p.SetValue(entity, Convert.ChangeType(cellvalue, Nullable.GetUnderlyingType(p.PropertyType)), null);
- }
- else
- {
- throw new Exception("genericTypeDefinition != typeof(Nullable<>)");
- }
- }
- //3、原地址:https://blog.csdn.net/hebbers/article/details/78957569
- //Type type = p.PropertyType;
- //if (type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))//判断convertsionType是否为nullable泛型类
- //{
- // //如果type为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换
- // System.ComponentModel.NullableConverter nullableConverter = new System.ComponentModel.NullableConverter(type);
- // //将type转换为nullable对的基础基元类型
- // type = nullableConverter.UnderlyingType;
- //}
- //p.SetValue(entity, Convert.ChangeType(cellvalue, type), null);
- //2、自定义 这种很傻,但当前解决速度最快
- //if (p.PropertyType.Name.Equals("Int32"))
- //{
- // p.SetValue(entity, Convert.ToInt32(value), null);
- //}
- //else if (p.PropertyType.Name.Equals("String"))
- //{
- // p.SetValue(entity, Convert.ToString(value), null);
- //}
- //else if (p.PropertyType.Name.Equals("Nullable`1"))
- //{
- // p.SetValue(entity, Convert.ToInt32(value), null);
- //}
- ////其它类型 暂时不管
- //1、字段不为空可以用这种
- //p.SetValue(entity, value, null);
- }
- });
- entities.Add(entity);
- }
- return entities;
- }
常用方法 DataTable转换为Entitys的更多相关文章
- 常用方法 DataTable转换为Html
点击单元格 可以输出行和列,这个功能可以在一些特殊的地方用 public static string GetHtmlString(DataTable dt) { StringBuilder sb = ...
- 再谈使用Emit把Datatable转换为对象集合(List<T>)
一.前因和存在的问题 前面我写了一篇<使用Emit把Datatable转换为对象集合(List<T>)>的博文,其实起源于我自己编写的一个orm工具(见前面几篇博文有介绍),里 ...
- 使用Emit把Datatable转换为对象集合(List<T>)
Emit生成动态方法部分摘自网上,但是经过修改,加入了对委托的缓存以及类结构的调整,使之调用更简洁方便.大致的思路是:要实现转换datatable到某个指定对象的集合,本质是实现转换一个datarow ...
- 对象列表转换为DataTable或DataTable转换为对象列表.
/**********************************************************************************/ // 说明: 数据转换工具. ...
- 使用扩展方法将DataTable转换为List<T>
在将DataTable转换为List<T>时,找到了网上的方案,原文链接:http://stackoverflow.com/questions/4593663/fetch-datarow- ...
- 把DataTable转换为泛型List<T>或是JSON
在开发ASP.NET Web API或ASP.NET MVC时,我们从数据库得到的数据往往是DataSet或是DataTable.为了能让前端JQuery能方便使用至这些数据,我们需要把这些数据转换为 ...
- DataTable转换为List<T>或者DataRow转换为T
这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示.我们需要把DataTable转换为List<T>或者DataRow转换为T. 本篇中可以 ...
- C#中把Datatable转换为Json的5个代码实例
一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table" ...
- 三层架构中bll层把datatable转换为实体model的理解
看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ...
随机推荐
- 【题解】Luogu P5291 [十二省联考2019]希望
ytq鸽鸽出的题真是毒瘤 原题传送门 题目大意: 有一棵有\(n\)个点的树,求有多少方案选\(k\)个联通块使得存在一个中心点\(p\),所有\(k\)个联通块中所有点到\(p\)的距离都\(\le ...
- group by 对多个字段进行分组
转载自:https://blog.csdn.net/xx_star1204/article/details/72884983 在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获 ...
- ES集群7.3.0设置快照,存储库进行索引备份和恢复等
说明:三台ES节点组成ES集群,一台kibana主机,版本均是7.3.0,白金试用版 官方地址:https://www.elastic.co/guide/en/elasticsearch/refere ...
- 如何查找YUM安装的JAVA_HOME环境变量详解
如何查找YUM安装的JAVA_HOME环境变量详解 更新时间:2017年10月27日 09:44:56 作者:铁锚 我要评论 这篇文章主要给大家介绍了关于如何查找YUM安装的JAVA_HOM ...
- cygwin中修改path变量
1.在家目录建立 .bash_profile 文件. 2.在该文件添加: export PATH=/my/path/:$PATH 3.解释,/my/path/为你要添加的目录,为什么不在.bashrc ...
- Android 权限的一些细节
Android 权限的一些细节 1 哪些app属于system app?为了区分privilege app和system app,这里先说明system app是什么,避免之后的讨论概念混乱. 在Pa ...
- Springboot vue.js html 跨域 前后分离 Activiti6 shiro 权限
官网:www.fhadmin.org 特别注意: Springboot 工作流 前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ activiti6.0 ...
- Beego 学习笔记12:文件的操作
文件的操作 1> 此事例操作的是text文件 2> 文件的操作有读取text内容,将内容写入到文件中,删除文件,创建文件 3> 新建一个控制器,名为rwfil ...
- Vue学习之生命周期钩子小结(四)
一.生命周期钩子(函数): 1.每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运 ...
- main process exited, code=exited, status=203/EXEC
问题描述: Oct :: c_3. systemd[]: Started etcd. Oct :: c_3. systemd[]: Starting etcd... Oct :: c_3. syste ...