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 进行绑定。
C# List<T> 转 DataTable的更多相关文章
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- C#中将DataTable导出为HTML的方法
今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,. 首先,我们要绑定DataTable和 DataGridV ...
- DataTable转换成IList<T>的简单实现
DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...
- 自用的基于Emit的C#下DataTable转实体类方法
之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...
- jquery dataTable汉化(插件形式)
1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...
- DataTable与DTO对象的简易转换类
在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化 ...
- asp.net DataTable导出Excel 自定义列名
1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- DataTable的orderby有关问题
在网上找了一个在后台重新对DataTable排序的方法(之所以不在数据库是因为我生成的是报表,写了存储过程用的表变量,order by也要用变量,死活拼不起来,sql能力没过关,动态sql也试了) s ...
- 关于c#在DataTable中根据条件删除某一行
我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要的行,下面的代码告诉你们 DataTable dts: DataRow[] foundRow; ...
随机推荐
- My97DatePicker-WdatePicker日历日期插件详细示例
<!DOCTYPE html> <html> <head> <title>排行</title> <meta charset=" ...
- [Go] 实现websocket服务端
直接使用官方子包可以实现websocket协议, golang.org/x/net/websocket 如果在这个目录没有这个包就去github下载net库,放进这个目录$GOPATH/src/gol ...
- web攻击与防御技术--SQL注入
sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...
- centos安装jdk10
下载一个jdk10文件到linux : wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=ac ...
- 从壹开始 [ 学调试 ]║ 轻松实现 PC端+移动端的本地同步联调
缘起 哈喽!(瞬间就想到了开场白:亲爱的朋友们,我又回来了
- 网易发起“疾风”智造IoT联盟,深化“互联网+先进制造业”发展
7月26日,2019网易云创峰会在杭州拉开序幕,本次峰会以“连接•洞察•进化”为主题,汇聚行业领袖.技术大咖及业界代表,探讨技术演进与行业应用趋势,研商生态合作升级.共赢未来的道路.上午的主论坛中,网 ...
- win10禁止自动更新的终极方法(亲测有效)
想必用过win10的朋友对其自动更新一定不会陌生,并且深恶痛绝, 有时正专注做一件事,突然就开始自动更新,被杀个措手不及,而且更新时间真的太久了,尤其最近更新频繁,真是伤脑筋, 期间也尝试 ...
- ETCD:系统限制
原文地址:System limits 请求大小限制 etcd被设计用来处理小键值对典型的如元数据.较大的请求数据也起作用,但可能会增加其他请求的延迟.默认情况下,任意的请求最大的空间为1.5MiB,这 ...
- 雪崩利器 hystrix-go 源码分析
阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力. 之前的帖子说了一下微服务的雪崩效应和常见的解决方案,太水,没有上代码怎么叫解决方案.githu ...
- 小知识:设置sqlplus默认vi编辑器的好处
如果是客户生产环境,不允许修改任何环境类的配置,那发现sqlplus默认不是我们熟悉的vi,可以在SQL>下临时指定,方便操作: SQL> define_editor=vi SQL> ...