常用方法 DataTable转换为Entitys
备注:摘自网上 有附地址
public static List<T> DataTableToEntities<T>(this DataTable dt) where T : class, new(){if (null == dt || dt.Rows.Count == 0) { return null; }List<T> entities = new List<T>();List<string> columnNames = new List<string>();for (int i = 0; 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/80839744if (!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;}
转载于:https://www.cnblogs.com/guxingy/p/11362720.html
常用方法 DataTable转换为Entitys相关推荐
- Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)
将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: 1 DataTable dt=new DataTa ...
- Datatable转换为Json
/// <summary> /// Datatable转换为Json /// </summary> /// <param name="table"&g ...
- DataTable转换为ListT或者DataRow转换为T
这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示.我们需要把DataTable转换为List<T>或者DataRow转换为T. 本篇中可以 ...
- 常用方法 Excel转换为DataSet
注意一下Excel格式,我平时导入的是xlsx /// <summary>/// Excel 转换为 DataSet/// </summary>/// <param na ...
- uipath循环datatable_UiPath之DataTable转换为List和Array
今天给大家分享一下,如何将DataTable转为List和Array,为此小U也花了不少时间研究,最后发现没有那么复杂. 先来说说List和Array的区别: List:就像一个链条,存储数据的空间可 ...
- 三、 将DataTable 转换为List
1. 方法 public static IList<T> ConvertTo<T>(DataTable table) { if (table == null) { return ...
- ListT转换为DataTable
关于List<T>转换为DataTable的问题一直是开发过程中经常用到的,现从网上整理几个常用的转换方式,留作备用. (尊重作者原创,本文代码转发自 List 与 DataTable 转 ...
- DataTable ,XML和JSON相互转化
网上搜集的,保留下来了,有需要的拿去!private string DataTable2Xml(DataTable dt) { StringBuilder xmlBuilder = new Strin ...
- DataTable转ListModel通用类
/// <summary> /// DataTable转List<Model>通用类[实体转换辅助类] /// </summary> public class Mo ...
最新文章
- html里的value什么含义,HTML input value属性表示什么
- linux杀气所以进程,Linux使用kill命令的注意事项
- 一个时间日期转换格式的小功能(Oracle)
- codeforces1485 F. Copy or Prefix Sum(dp)
- cf1107e uva10559区间dp升维
- C# 类型转换(is和as运算符)
- MyCat的zookeeper集群模式总结
- 前端生成小程序二维码
- Apache CXF 框架结构和基本原理
- 论文阅读:Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hinton
- linux kernel pwn学习之堆漏洞利用+bypass smap、smep
- 1.机器学习的重要性
- 计算机物联网知识,什么是物联网,关于物联网的小知识
- 歹徒逃亡3——————刺杀行动
- 七七四十九劫,九九八十一难
- 机器学习——回归——一元线性回归
- matlab excel操作,Matlab读取excel文件里数据的操作流程
- 4210: 孙壕请一盘青岛大虾呗【递归/注意结束条件】
- 基于java的量化交易软件,用户可自行编写交易策略,用于期货、股票、外汇、炒币等多种交易场景,前端采用node14 + vue2
- C++课件知识点整理