zoukankan      html  css  js  c++  java
  • C# List<T> 转 DataTable

    C# List<T>DataTable

    学习自:博客园<吃了炫迈的猫>

    Overview

    数据!!个人认为程序就是将数据变着花样的显示它。那么这个时候我们的数据处理和获取就时我们的关键一步,如果你数据都处理不好,何谈形象的显示数据呢。

    List<T> 转 DataTable

    我们这边使用Entity Framework从数据库获取数据。
    我们先看一下完整的源码:

    void ListToDataTable()
    {
        using (var context = new WorldSkillsChina2016Entities())
        {
            List<User> userList = (from a in context.User select a).ToList<User>();//将查询出来的User表 转换成一个集合
    
            DataTable dt = new DataTable();//创建一个DataTable来存储数据
    
            PropertyInfo[] properties = new User().GetType().GetProperties();//然后我们获取User表的所有属性。注意:是属性而不是字段。
    
            foreach (var item in properties)//根据我们的属性创建DataTable的列
            {
                dt.Columns.Add(item.Name, item.PropertyType);
            }
    
            for (int i = 0; i < userList.Count; i++)//使用for循环添加数据
            {
                object[] objects = new object[properties.Length];//创建一个和User类等长的数组。
    
                for (int a = 0; a < properties.Length; a++)
                {
                    objects[a] = properties[a].GetValue(userList[i], null);//循环添加数据
                }
    
                dt.LoadDataRow(objects, true);//将数据作为一整行的形式添加到我们的DataGridView中。
            }
            this.dataGridView1.DataSource = dt;//数据实现绑定。
        }
    
    }
    

    接着我们根据我们的源码来讲解一下。

    • 首先我们创建了一个List<User>来接收我们的User表的数据。
    • 然后我们创建一个DataTable
    • 获取User类的所有属性,只是属性不包含字段。
    • 使用foreach 根据User类的属性,来创建我们DataTable的列。
    • 接着使用for循环添加数据
      • 创建一个和User表属性等长的一个数组 。
      • 循环每个User对象根据的指定属性获取值,并依次付给数组的指定位置。
      • 将整个数组以行的方式添加到我们的DataTable中。
    • 最后将这个DataTable和DataGridView 进行绑定。
  • 相关阅读:
    zabbix服务端安装部署
    SQL基础术语和单行函数
    Win 2008 R2——由于管理员设置的策略,该磁盘处于脱机状态
    如何扎实自己的Java基础?
    可任意拖拽的div js 代码
    最新版通过前端js 代码实现html转canvas载转成pdf的方法
    spring四大注解
    百度地图API:自定义多个途经点的导航
    用jrebel实现 jvm热部署,修改类不用重启tomcat
    jsp 转为pdf
  • 原文地址:https://www.cnblogs.com/cao-1/p/12075990.html
Copyright © 2011-2022 走看看