C# 将DataTable装换位List<T> 泛型

public List<T> GetList<T>(DataTable dt) where T:new()
        {
            List<T> DateLists = new List<T>();
            string Typename = "";
            foreach (DataRow rows in dt.Rows)
            {
                T t = new T();
                PropertyInfo[] info = typeof(T).GetProperties();
                foreach (PropertyInfo pi in info)
                {
                    Typename = pi.Name;
                    if (dt.Columns.Contains(Typename))
                    {
                        object value = rows[Typename];
                        if (value!=DBNull.Value)
                        {
                            if (pi.PropertyType.ToString()=="System.String")
                            {
                                pi.SetValue(t, System.Web.HttpUtility.HtmlDecode(value.ToString()), null);
                            }
                            else
                            {
                                pi.SetValue(t,value,null);
                            }
                        }
                    }
                }

                DateLists.Add(t);
            }
            return DateLists;
        }
时间: 2024-10-19 00:22:29

C# 将DataTable装换位List<T> 泛型的相关文章

机房收费系统重构——Datatable转泛型

刚开始在机房重构中用的最多的是Datatable,之前没有开始的时候就听大家一直在说泛型,很好奇这个东西,也很想知道明明用Datatable就可以,为什么非要转成泛型?它到底有什么好处呢?于是,便开始了研究-- Datatable是一个临时保存数据的网格,是一个虚拟表.我们在使用Datatable时,通过D层直接将数据库中的数据选出来,返回到B层和U层,在返回的时候我们要是想显示到窗体,就需要将U层的文本框与这个表中的字段一一对应.如果不小心就会写错,然后数据显示就不对.这样对数据库的耦合性太大

使用泛型集合代替datatable作为返回值实现面向对象

开会的时候,师父说,我们在机房重构时,尽量不要用datatable作为返回值,改用泛型集合的方式,这样可以实现真正的面向对象.通过查资料和同学交流,把这个问题给解决了.对于泛型集合,我也有了一些认识. 一.对泛型集合的认识 1.存在于System.Collection,Generic的命名空间中,在用的时候,需要引用 2.泛型是具有占位符(类型参数)的类,结构,接口和方法.就是说,在泛型集合中加入的数据必须符合指定的类型<T>,否则编译时就会报错. 以上为设计模式培训实习生的内容. 那泛型集合

泛型集合的使用

对于机房收费系统的重构.从大的方面来看.无非就是对于数据库的四个操作.增删改查.而且我们用的是三层架构进行重构.D层用来和数据库打交道.进行这四个操作就须要有返回值,增删改在这里不多说.可是当进行查的时候.d层须要数据给b层,那么我们以什么样的形式返回最好呢? 刚開始接触三层的时候,我返回的是datatable,就是dt.Rows[0]["xxx"]的形式,感觉实现了.就非常厉害了,后来通过与大家交流发现,事实上另一种更好用的方法.就是利用实体类填充泛型集合. 那么问题就出来了: 1.

C#将datatable的某一列转换成json格式的字符串

将datatable的某一列转换成json格式的字符串(转换完后自己在字符串前后加{}) /// <summary> ///DataTable装换 Column数据 组合成json 现在的格式  /// </summary> /// <param name="dt"></param> /// <param name="rowIndex">datatable第几行</param> /// <

C/S总结

学习完了C/S这个大阶段,都不知道自己是怎么走过来,现在,回头看一下,感觉自己也挺有收获的,下面我主要是把我所写的博客总结了一下. 软件工程主要的内容集中在软件设计的步骤上: 计划(项目开发计划) 需求分析(软件需求) 设计(概要.详细.数据库) 编码 测试(测试计划.测试分析) 运行和维护 文档:开发前需准备好:项目可行性项目.项目开发计划.软件需求分析说明书.概要设计.详细设计.数据要求说明.数据库设计: 开发中:项目开发进度月报.项目开发总结报告: 开发后:测试计划说明书.测试分析分析说明

机房收费.NET版个人重构——总结

机房收费系统个人重构版终于要落下帷幕了,这一个半月经历的"痛苦"和成功时喜悦恐怕也只有自己能够体会吧,现在回过头来,进行一下总结,颗粒归仓! 机房收费个人重构大概的经历应该分为四个阶段:需求分析,软件架构(UML图和软工文档),代码编写,程序调试完善. 需求分析 个人重构版的需求分析要比VB版明朗多了,其中有三点需要指出: a.软件的使用者是教师或其他教职工,而学生作为消费者不直接接触该系统. b.三种用户(一般用户,操作员,管理员)只是权限不同,而且具有继承关系. c.感觉应该有个超

【设计模式】面向对象基础

最近一直在学习<大话设计模式>根据师傅对我的指导,让我先学习这本书的附录--面向对象基础.说实在话,面向对象技术从很早就接触了,从刚开始的C++,其次是软工视频,然后是UML,紧接着是C#,直到现在的设计模式.. 总的来说,在设计模式之前,我对面向对象的了解还只是停留在封装.继承.多态的层次上,虽然在C#视频中,有全面的讲解了一下,但是自己还是晕晕乎乎的,脑子中还是有很多疑云..直到这次的设计模式,通过通过幽默生动.而又通俗易懂的故事,对面向对象技术深入浅出,我才算是真正的入门了.. 这篇博客

MFC如何使控件大小随着对话框大小自动调整

对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看.下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整. 首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整. 比如原来对话框大小为a,现在为b,原来控件大小为c,那么现在的控件大小应该为c*b/a;(注意a不能为0). 看实例:(黑体字为添加的代码!!)

深入浅出EF之ModelFirst和DBFirst

在上篇博文中,小编主要简单的介绍了一下EF的一些基础知识,其中,小编蜻蜓点水的提了一下ModelFirst和DBFirst,ModelFirst先设计实体,然后根据模型生成数据库,DBFirst根据数据库生成模型,两个方向都是可以了,两个方向可以相互更新,比如新添加了实体,可以根据模型生成数据库,如果在数据库里面新添加了字段,我们可以从数据库更新模型.在介绍ModelFirst和DBFirst之前,我们先来解决两个问题,EF与linq to sql的关系以及为什么使用linq to sql和EF