DataTable 转 List<T>
最近在做一个项目,表的数据巨多,而且表的字段一般都在30个以上。公司规定不能用Nhibernate以及ef等ORM框架。
所以查询绑定时的工作量极为痛苦。没有办法,自己写了个DataTableToList方法来简化一下,希望对大家有所帮助。
其实这个方法主要是用泛型方法来实现的,代码如下,仅供参考如有不妥,欢迎拍砖!
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
GridView1.DataSource =result();
GridView1.DataBind();
}
}
private List<Student> result() {
DataTable dt = new DataTable();
DataColumn[] cols = new DataColumn[] {
new DataColumn(){ ColumnName="name"},
new DataColumn(){ ColumnName="sex"},
new DataColumn(){ ColumnName="age"}
};
dt.Columns.AddRange(cols);
List<object[]> rows = new List<object[]> {
new object[] { "xiaochun","man",""},
new object[] { "xiaochun1", "man", "" },
new object[] { "xiaochun2", "man", "" }
};
Array.ForEach(rows.ToArray(),row=>dt.Rows.Add(row));
List<Student> stuList = new List<Student>();
stuList = DataTableToList(new Student(),dt);
return stuList;
} private List<T> DataTableToList<T>(T obj,DataTable dt) {
List<T> list = new List<T>();
foreach (DataRow row in dt.Rows) {
Type t=typeof(T);
PropertyInfo[] info = t.GetProperties();
foreach (DataColumn col in dt.Columns) {
info.Where(s => s.Name.ToLower() == col.ColumnName.ToLower())
.Select(s => s).First().SetValue(obj,row[col.ColumnName].ToString(),null); }
list.Add(obj);
}
return list;
}
} public class Student{
public string name{get;set;}
public string sex{get;set;}
public string age{get;set;}
}
DataTable 转 List<T>的更多相关文章
- 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; ...
随机推荐
- Android 应用测试总结
前提所有的功能分支已完成 启动:1. 启动入口:桌面正常启动,最近运行启动,所有程序列表中启动,锁屏快捷启动2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)3. 退回:从其他程序 ...
- [转]如何解决外边距margin叠加的问题探讨
两个或多个毗邻的普通流中的块元素垂直方向上的 margin 会折叠,那么如何使元素上下margin不折叠呢?下面的方法或许对大家有所帮助 一.首先你要知道什么情况下会触发:两个或多个毗邻的普通流中的块 ...
- BZOJ 1076 & 撞鸭递推
题意: 还是看原题题面好... 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随 机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决 ...
- css position的使用
css position的使用 css 的 position 属性是用来设置元素的位置的,它还能设置一个元素出现在另一个元素的下层元素能用 top,bottom,left 和 right 属性设置位置 ...
- Linux crontab 命令格式与详细例子
基本格式 :* * * * * command分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示第2列表示小时1-23(0表示0点)第3列表示日期1-31第4列表示月份1-1 ...
- Eclipse中的文件导航插件StartExplorer
在Eclipse里面,想找到文件的位置是件麻烦的事,需要借助插件,我用的是StartExplorer插件. StartExplorer官方地址:http://startexplorer.sourcef ...
- macos开发pgsql数据库
mac安装Postgresql作为数据库 最简单的方式是安装Postgres.App. 这个应用里自带了最新版本的PostgreSQL而且不需要学习数据库服务器启动和关闭的命令.程序安好后(别忘了拖拽 ...
- *HDU3367 最小生成树
Pseudoforest Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- js事件机制——事件冒泡和捕获
概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的onclick事件也会被触发.js里称这种事件连续发生的机制为事件冒泡或者事件捕获. IE浏览器:事件从 ...
- workspace路径有中文情况会报java.net.MalformedURLException: unknown protocol: d错误
原因及描述:java读取xml文件时如果出现中文字符就会出现这类错误 解决方法: 1.将中文路径改为英文路径 2.读取file时"file:///d:/" 而不是"d ...