• 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 进行绑定。
  • 相关阅读:
    O(1)时间求出栈内元素最小值
    静态查找>顺序、折半、分块查找
    字符串的最大重复数
    数据结构>栈
    排序>归并排序
    动态查找>二叉查找树(Binary Search Tree)
    数据结构>图的存储结构
    数据结构>图的连通性和最小生成树
    图片的轮廓
    数据结构>队列
  • 原文地址:https://www.cnblogs.com/cao-1/p/12075990.html
Copyright © 2020-2023  润新知