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; ...
随机推荐
- matlab学习第一天
>> x=linspace(-,,); >> y=x.^.*sin(x); >> plot(x,y,) >> plot(x,y,) 分析: linspa ...
- 在visual studio2015中使用easyX画图
配置:解压EasyX压缩包: 将文件内的include,lib,lib/amd64下的文件拷贝到visualstudio中VC文件夹内对应的地方: 然后再执行上图中的Setup.hta进行安装: 在v ...
- sublime text3点击ctrl+B无法运行Python程序?
1.打开sublime text 3 ,选择 tools-->Build System-->New Build System.... 2.将下面代码块复制进新文件中,并命名为Python. ...
- Hibernate的实体类为什么要实现Serializable序列化接口?
Hibernate的实体类中为什么要继承Serializable? hibernate有二级缓存,缓存会将对象写进硬盘,就必须序列化,以及兼容对象在网络中的传输 等等. java中常见的几个类(如 ...
- 【MongoDB:第二天】基本操作
接上一篇博客: http://www.cnblogs.com/xiaoit/p/3867573.html 1:插入新的数据 db.person.insert({"uid" : 12 ...
- pushState与ajax实现无刷新加载
一.JS代码: $(document).ready(function() { getContent();//初始化页面 $("nav a").click(function() { ...
- 对比SerialCommunication和微软的SerialPort,向SerialPort看齐
SerialCommunication是我综合网上看到的代码稍作修改而成的串口通信类,而SerialPort则是C#的System类库的IO目录Ports子目录下的串口通信类.SerialCommun ...
- Meteor 学习
官方网站 https://www.meteor.com/ 官方API手册 https://guide.meteor.com/ http://docs.meteor.com/ 中文网站 http://c ...
- django 有model生成SQL以及现有反向表生成model
已有models生成SQL语句 语法 python manage.py sqlall app_name # app_name, 在settings已经导入, 如: INSTALLED_APPS = ...
- Ubuntu jdk安装
1. 创建目录 sudo mkdir /usr/lib/jvm 2. 解压 sudo tar -zxvf jdk-7u60-linux-x64.gz -C /usr/lib/jvm 3. 修改环境变量 ...