1. public class ConvertHelper<T> where T : new()
  2. {
  3. /// <summary>
  4. /// 利用反射和泛型
  5. /// </summary>
  6. /// <param name="dt"></param>
  7. /// <returns></returns>
  8. public static List<T> ConvertToList(DataTable dt)
  9. {
  10.  
  11. // 定义集合
  12. List<T> ts = new List<T>();
  13.  
  14. // 获得此模型的类型
  15. Type type = typeof(T);
  16. //定义一个临时变量
  17. string tempName = string.Empty;
  18. //遍历DataTable中所有的数据行
  19. foreach (DataRow dr in dt.Rows)
  20. {
  21. T t = new T();
  22. // 获得此模型的公共属性
  23. PropertyInfo[] propertys = t.GetType().GetProperties();
  24. //遍历该对象的所有属性
  25. foreach (PropertyInfo pi in propertys)
  26. {
  27. tempName = pi.Name;//将属性名称赋值给临时变量
  28. //检查DataTable是否包含此列(列名==对象的属性名)
  29. if (dt.Columns.Contains(tempName))
  30. {
  31. // 判断此属性是否有Setter
  32. if (!pi.CanWrite) continue;//该属性不可写,直接跳出
  33. //取值
  34. object value = dr[tempName];
  35. //如果非空,则赋给对象的属性
  36. if (value != DBNull.Value)
  37. pi.SetValue(t, value, null);
  38. }
  39. }
  40. //对象添加到泛型集合中
  41. ts.Add(t);
  42. }
  43.  
  44. return ts;
  45.  
  46. }
  47. public static T ConvertToM(DataTable dt)
  48. {
  49. // 获得此模型的类型
  50. Type type = typeof(T);
  51. //定义一个临时变量
  52. string tempName = string.Empty;
  53. //遍历DataTable中所有的数据行
  54. DataRow dr = dt.Rows[];
  55. T t = new T();
  56. // 获得此模型的公共属性
  57. PropertyInfo[] propertys = t.GetType().GetProperties();
  58. //遍历该对象的所有属性
  59. foreach (PropertyInfo pi in propertys)
  60. {
  61. tempName = pi.Name;//将属性名称赋值给临时变量
  62. //检查DataTable是否包含此列(列名==对象的属性名)
  63. if (dt.Columns.Contains(tempName))
  64. {
  65. // 判断此属性是否有Setter
  66. if (!pi.CanWrite) continue;//该属性不可写,直接跳出
  67. //取值
  68. object value = dr[tempName];
  69. //如果非空,则赋给对象的属性
  70. if (value != DBNull.Value)
  71. pi.SetValue(t, value, null);
  72. }
  73. }
  74. return t;
  75.  
  76. }
  77. }

内裤:DataTable转Model的更多相关文章

  1. DataTable转换为Model实体对象

    记得在学校的时候,接触得最多的就是SqlHelper,每次在读取的时候不管是DataTable还是DataReader转换为实体对象的时候是最恼火的,因为要写很多代码,而且没有什么意义.后面接触到了反 ...

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

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

  3. json,DataTable,model

    1.DataTable转json public class DataTableConvertJson { #region dataTable转换成Json格式 /// <summary> ...

  4. C#DataTable与Model互转

    /// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where ...

  5. C#把 DataTable转换为Model实体

    public static List<T> GetModelFromDB<T>( DataTable dt ) { List<T> data = new List& ...

  6. DataTable数据赋值给Model通用方法

    注:该文属本人原创,今后项目中发现该方法存在BUG会实时更新,转载记得附上原文出处,方便大家获得最新代码. 相信大家在做项目中,经常会根据不同的表new各种不同的Model,当需要对Model进行实例 ...

  7. 反射实现 Data To Model

    调用 : public ActionResult Index() { DataTable dt = new DataTable(); dt.Columns.Add("Name"); ...

  8. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  9. 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法

       懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法    github地址:https://github.com/Jimmey-Jiang/J ...

随机推荐

  1. iOS代码加密常用加密方式

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  2. 优化MySchool数据库(一)

    <优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...

  3. WPF学习之路(八)页面

    传统的应用程序中有两类应用程序模式:桌面应用,Web应用.WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序 WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序 ...

  4. HashSet vs TreeSet vs LinkedHashSet

    使用Set集合的主要原因是因为Set集合里面没有重复的元素.Set集合有三个常见的实现类:HashSet,TreeSet,LinkedHashSet.什么时候,选择哪一个使用非常重要.简单的说,如果你 ...

  5. 7 个顶级的 HTML5 Canvas 动画赏析

    HTML5确实是一项改革浏览器乃至整个软件行业的新技术,它可以帮助我们Web开发者很方便地在网页上实现动画特效,而无需臃肿的Flash作为支撑.本文分享7个顶级的HTML5 Canvas 动画,都有非 ...

  6. Proactor VS Reactor

    proactor vs reactor 先发几本proactor 与 reactor 相关的电子书: http://files.cnblogs.com/files/f1194361820/reacto ...

  7. 【密码】Oracle用户密码系列

    [密码]Oracle用户密码系列 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  8. eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)

    在eclipse中用过maven的可能都遇到过这种情况,我以前一直在search.maven里面搜索,然后添加pom信息. 今天在网上搜索时,找到了一个解决方法,在这里分享一下. 第一步,在prefe ...

  9. 记一次使用openrowset 的坑

    前几天被老大训斥连openrowset 都不会用,然后我就去看了文档,想测试一下栗子~ openrowset 的具体语法我就不贴了,戳这里:https://msdn.microsoft.com/zh- ...

  10. Java设计模式学习笔记(单例模式)

    最近一直在看<Head First设计模式>,这本书写的确实是很不错的,专注于怎么用最简单的方式最通俗的语言让人了解设计模式.据说GoF的设计模式那本书写的很好,是一本经典,但是就是难懂, ...