• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 将DataTable转换成List<T>实现思路及示例代码

将DataTable转换成List<T>实现思路及示例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了datatable转换为list,datatable转成list,list转datatable,c list转datatable,list datatable等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前几天在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List<T>的泛型集合(已知T类型)。第一反应,我想肯定要用到“泛型”(这不是废话吗?都说了要转换成List<T>泛型集合了),而且还要用到“反射”相关的。呵呵。很快,我就做出了一个小实例,测试通过。下面我将代码贴出来,分享给大家。代码都有详细的注释,读者朋友可以很清晰的看懂我的思路。

首先,这是我写的一个通用转换类,完成此类操作。也是实现这个功能最核心的部分:

            // 定义集合
            List<T> ts = new List<T>();

            // 获得此模型的类型
            Type type = typeof(T);
            //定义一个临时变量
            string tempName = string.Empty;
            //遍历DataTable中所有的数据行
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                // 获得此模型的公共属性
                PropertyInfo[] propertys = t.GetType().GetProperties();
                //遍历该对象的所有属性
                foreach (PropertyInfo pi in propertys)
                {
                    tempName = pi.Name;//将属性名称赋值给临时变量
                    //检查DataTable是否包含此列(列名==对象的属性名) 
                    if (dt.Columns.Contains(tempName))
                    {
                        // 判断此属性是否有Setter
                        if (!pi.CanWrite) continue;//该属性不可写,直接跳出
                        //取值
                        object value = dr[tempName];
                        //如果非空,则赋给对象的属性
                        if (value != DBNull.Value)
                            pi.SetValue(t, value, null);
                    }
                }
                //对象添加到泛型集合中
                ts.Add(t);
            }

            return ts;

        }
    }
}
</div>
下面,是Main方法中调用的实例:


namespace DatableToList
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = CreateDt();//获得一个DataTable
          //根据对象类型和DataTable,获取泛型集合
          List<Person>  list = ConvertHelper<Person>.ConvertToList(dt);
          //遍历该泛型集合,打印输出。
        foreach (var item in list)
        {
            Console.WriteLine(item.ToString());
        }

          Console.ReadKey();
        }
        /// <summary>
        /// 创建一个DataTable,并添加数据,提供测试。
        /// </summary>
        /// <returns></returns>
        public static DataTable CreateDt()
        {

            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("id", typeof(System.Int32)));
            dt.Columns.Add(new DataColumn("name", typeof(System.String)));
            dt.Columns.Add(new DataColumn("address", ty

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c#的datatable转list示例
  • 将DataTable转换成List&lt;T&gt;实现思路及示例代码

相关文章

  • 2017-05-28C#实现矩阵加法、取负、数乘、乘法的方法
  • 2017-05-28C#实现Socket通信的解决方法
  • 2017-05-28C# 设计模式系列教程-状态模式
  • 2017-05-28C#实现用户自定义控件中嵌入自己的图标
  • 2017-05-28C#特性-对象集合初始化器介绍
  • 2017-05-28c#的dllimport使用方法详解
  • 2017-05-28C#关于类的只读只写属性实例分析
  • 2017-05-28C#创建二叉搜索树的方法
  • 2017-05-28C#控制台下测试多线程的方法
  • 2017-05-28C#实现安全删除文件目录的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#解析Lrc歌词文件过程详解
    • C#操作图片读取和存储SQLserver实现代码
    • C#动态生成PictureBox并指定图片的方法
    • C# Winform 禁止用户调整ListView的列宽
    • 在C#里面给PPT文档添加注释的实现代码
    • C#接口(Interface)用法分析
    • 深入C#字符串和享元(Flyweight)模式的使用分析
    • c#编写的番茄钟倒计时器代码
    • C#获取U盘序列号的方法
    • 验证本机的excel版本的C#代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有