代码:

  1. public class ModelConvertHelper<T> where T : new()
  2. {
  3. public static IList<T> ConvertToModel(DataTable dt)
  4. {
  5. // 定义集合
  6. IList<T> ts = new List<T>();
  7.  
  8. // 获得此模型的类型
  9. Type type = typeof(T);
  10. string tempName = "";
  11.  
  12. foreach (DataRow dr in dt.Rows)
  13. {
  14. T t = new T();
  15. // 获得此模型的公共属性
  16. PropertyInfo[] propertys = t.GetType().GetProperties();
  17. foreach (PropertyInfo pi in propertys)
  18. {
  19. tempName = pi.Name; // 检查DataTable是否包含此列
  20.  
  21. if (dt.Columns.Contains(tempName))
  22. {
  23. // 判断此属性是否有Setter
  24. if (!pi.CanWrite) continue;
  25.  
  26. object value = dr[tempName];
  27. if (value != DBNull.Value)
  28. pi.SetValue(t, value, null);
  29. }
  30. }
  31. ts.Add(t);
  32. }
  33. return ts;
  34. }
  35. }

使用:  

  1. IList<TestModel> resultList = ModelConvertHelper<TestModel>.ConvertToModel(dt);

  

c# DataTable 转为 List 类型的更多相关文章

  1. 用反射写自己的DataTable转为对应的Mod

    之前写过类似的方法,今天做项目的时候又遇到了,以前的代码没有保存,导致又得重新写 场景:当我们定义自己的很多模型(Mods)的时候,而数据库读取出来的却是DataSet,DataTable类型的时候, ...

  2. .net 利用Emit将object转为DbParameter,DataTable转为List<>

    先放测试结果图,测试的方法是拷贝了老赵的一个简单的性能计数器:CodeTimer.发现速度还是比利用反射来获取快了2倍左右的,将object转为DbParameter的反射方法我没写.         ...

  3. DataTable转List,DataTable转为Model对象帮助类

    DataTable转List,DataTable转为Model对象帮助类 public class ModelConvertHelper<T> where T : new() { publ ...

  4. C#实现DataTable转为Excel文件

    实现DataTable转为Excel文件,和上次分享的Excel文件转为DataTable互为反操作.DataTable转化为Excel文件是通过传入一个DataTable类型的参数,然后将传入的Da ...

  5. Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

    由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...

  6. javabean实体类对象转为Map类型对象的方法(转发)

    //将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...

  7. MySQL中,把varchar类型转为date类型

    如下表: 先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序 语法:select str_to_date(class_time,'%Y%m%d %H:%i:%s') ...

  8. EntityFrameworkCore将数据库Timestamp类型在程序中转为long类型

    EntityFrameworkCore将数据库Timestamp类型在程序中转为long类型 EntityFrameworkCore Entity public class Entity { publ ...

  9. 【C#】string格式的日期转为DateTime类型及时间格式化处理方法

    日期格式:yyyyMMdd HH:mm:ss(注意此字符串的字母大小写很严格) yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小时(24小时制) mm: 代表分钟 ss: 代表秒 ...

随机推荐

  1. Excel 读写程序 C#源代码下载

    http://u.163.com/lNaJAjOz  提取码: E4ZHjnfD

  2. mysql5.8安装指南

    一.安装mysql yum源 从官网http://dev.mysql.com/downloads/repo/yum/下载mysql最新的yum源的rpm安装包 wget http://repo.mys ...

  3. windows电脑优化

    电脑磁盘已用99% 100%解决办法_百度经验 禁用superfetch服务 链接:http://jingyan.baidu.com/article/046a7b3edeea38f9c37fa911. ...

  4. VisualRust + VisualGDB编辑调试Rust

    Rust到1.6了,到了一个相对成熟的阶段,可以试用做一些项目了.但是写的代码越多,就会发现一个好的IDE相当于效率的一半.这里分享我 在Visual Studio的使用Rust的经验. 首先需要下载 ...

  5. 初学c# -- 学习笔记(七) RichTextBox支持GIF

    园子里许明吉博客写的一篇,刚好用到这个,写的非常好.转过来了 不过在应用中也有一些问题,win10下不能中文输入,凑合着进行了修改, 下面是原来的代码: private void button2_Cl ...

  6. MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

    MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...

  7. C# 开源压缩组件比较

    SevenZipSharp check()为检查压缩包,有BUG,360创建的zip压缩包有无密码,密码错对都返回true DotNetZip 提供的函数比较人性化,缺点是只支持zip SharpCo ...

  8. Android之设置横屏竖屏

    方案一:在AndroidManifest.xml中配置 在项目的AndroidManifest.xml中找到你所指定的activity中加上Android:screenOrientation属性,它有 ...

  9. 关于Linux x64 Oracle JDK7u60 64-bit HotSpot VM 线程栈默认大小问题的整理

    JVM线程的栈默认大小,oracle官网有简单描述: In Java SE 6, the default on Sparc is 512k in the 32-bit VM, and 1024k in ...

  10. java--UDP屏幕广播代码

    1.发送端的代码 这里广播的地址只写了一个 package com.udp.broadcast; import java.awt.Robot; import java.awt.image.Buffer ...