备注:摘自网上 有附地址

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相关推荐

  1. Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)

    将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: 1 DataTable dt=new DataTa ...

  2. Datatable转换为Json

    /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table"&g ...

  3. DataTable转换为ListT或者DataRow转换为T

    这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示.我们需要把DataTable转换为List<T>或者DataRow转换为T. 本篇中可以 ...

  4. 常用方法 Excel转换为DataSet

    注意一下Excel格式,我平时导入的是xlsx /// <summary>/// Excel 转换为 DataSet/// </summary>/// <param na ...

  5. uipath循环datatable_UiPath之DataTable转换为List和Array

    今天给大家分享一下,如何将DataTable转为List和Array,为此小U也花了不少时间研究,最后发现没有那么复杂. 先来说说List和Array的区别: List:就像一个链条,存储数据的空间可 ...

  6. 三、 将DataTable 转换为List

    1. 方法 public static IList<T> ConvertTo<T>(DataTable table) { if (table == null) { return ...

  7. ListT转换为DataTable

    关于List<T>转换为DataTable的问题一直是开发过程中经常用到的,现从网上整理几个常用的转换方式,留作备用. (尊重作者原创,本文代码转发自 List 与 DataTable 转 ...

  8. DataTable ,XML和JSON相互转化

    网上搜集的,保留下来了,有需要的拿去!private string DataTable2Xml(DataTable dt) { StringBuilder xmlBuilder = new Strin ...

  9. DataTable转ListModel通用类

    /// <summary> /// DataTable转List<Model>通用类[实体转换辅助类] /// </summary> public class Mo ...

最新文章

  1. html里的value什么含义,HTML input value属性表示什么
  2. linux杀气所以进程,Linux使用kill命令的注意事项
  3. 一个时间日期转换格式的小功能(Oracle)
  4. codeforces1485 F. Copy or Prefix Sum(dp)
  5. cf1107e uva10559区间dp升维
  6. C# 类型转换(is和as运算符)
  7. MyCat的zookeeper集群模式总结
  8. 前端生成小程序二维码
  9. Apache CXF 框架结构和基本原理
  10. 论文阅读:Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hinton
  11. linux kernel pwn学习之堆漏洞利用+bypass smap、smep
  12. 1.机器学习的重要性
  13. 计算机物联网知识,什么是物联网,关于物联网的小知识
  14. 歹徒逃亡3——————刺杀行动
  15. 七七四十九劫,九九八十一难
  16. 机器学习——回归——一元线性回归
  17. matlab excel操作,Matlab读取excel文件里数据的操作流程
  18. 4210: 孙壕请一盘青岛大虾呗【递归/注意结束条件】
  19. 基于java的量化交易软件,用户可自行编写交易策略,用于期货、股票、外汇、炒币等多种交易场景,前端采用node14 + vue2
  20. C++课件知识点整理

热门文章

  1. linux make java版本,告诉make是否在Windows或Linux上运行
  2. Datatables 构建响应式
  3. 微信小程序+TP5——token令牌生成
  4. 树莓派Raspbian Buster/Debian 10 安装ROS
  5. 我的新书《PWA入门与实践》上市了
  6. antd 表单域验证规则 - 只能输入数字字符,去除前导0
  7. 拼图游戏及其相关算法
  8. React开发(193):react无障碍使用程序获取焦点第一种
  9. react学习(25)---注意接口引入位置
  10. [html] 隐藏div内文字的方法有哪些?