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 进行绑定。

C# List<T> 转 DataTable的更多相关文章

  1. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  2. C#中将DataTable导出为HTML的方法

    今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,. 首先,我们要绑定DataTable和 DataGridV ...

  3. DataTable转换成IList<T>的简单实现

    DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...

  4. 自用的基于Emit的C#下DataTable转实体类方法

    之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...

  5. jquery dataTable汉化(插件形式)

    1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...

  6. DataTable与DTO对象的简易转换类

    在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化 ...

  7. asp.net DataTable导出Excel 自定义列名

    1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...

  8. asp.net dataTable转换成Json格式

    /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...

  9. DataTable的orderby有关问题

    在网上找了一个在后台重新对DataTable排序的方法(之所以不在数据库是因为我生成的是报表,写了存储过程用的表变量,order by也要用变量,死活拼不起来,sql能力没过关,动态sql也试了) s ...

  10. 关于c#在DataTable中根据条件删除某一行

    我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要的行,下面的代码告诉你们 DataTable dts:                DataRow[] foundRow;   ...

随机推荐

  1. How to: Initialize Business Objects with Default Property Values in XPO 如何:在 XPO 中用默认属性值初始化业务对象

    When designing business classes, a common task is to ensure that a newly created business object is ...

  2. maven搭建webservice apache cxf实现

    用 web方式发布 webService 服务端.客户端 一.服务器端搭建 1.首先创建 一个web工程(增加Maven依赖) 2.增加Maven依赖包,如下: <project xmlns=& ...

  3. Java中"或"运算与"与"运算快慢的三三两两

    先上结论 模运算比与运算慢20%到30% 这是通过实验的方式得到的结论.因为没有大大可以进行明确指导,所以我以最终运行的结果为准.欢迎指正. 测试代码 @Test public void test10 ...

  4. Dynamics 365 Customer Engagement导入解决方案时出错:Microsoft.Crm.CrmException: Plug-in assembly does not contain the required types or assembly content cannot be updated.

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  5. 坚果云+typora(个人十分喜欢的一个记笔记方式)

    1.名称 坚果云 markdown--->typora 2.喜欢原因 2.1 坚果云 坚果云全平台覆盖,支持Windows.Mac.Linux.iOS(iPad及iPhone).Android. ...

  6. 表单生成器(Form Builder)之伪造表单数据番外篇——随机车辆牌照

    前几天记录了一下表单生成器(Form Builder)之表单数据存储结构mongodb篇,之后便想着伪造一些数据.为什么要伪造数据呢?说来惭愧,因为拖拉拽设计表单以及表单对应的列表的PC端和移动端该显 ...

  7. git结合项目基本使用

    学习博客:1,史上最浅显易懂的Git教程! 2,结合项目具体使用 3,常用命令快速查看 4,git stash 用法总结和注意点 一.git的工作原理和工作流程 Workspace:工作区 Index ...

  8. quarter软件的破解

    链接;http://www.openedv.com/forum.php?mod=viewthread&tid=275857&extra=page%3D1 这个是正点原子提供的破解方法, ...

  9. java之Set接口(单列集合)

    Set接口概述 java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Coll ...

  10. js 生成32位随机数,可用于微信支付流水号(前端生成)

    $(function () { /*生成32位随机流水号*/ /*默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1*/ var $chars = 'ABCDEFGHJKMNPQRSTWXYZ ...