将DataTable转换为List,将List转换为DataTable的实现类
将DataTable转换为List,将List转换为DataTable的实现类
- public static class DataTableHelper
- {
- public static DataTable ConvertTo<T>(IList<T> list)
- {
- DataTable table = CreateTable<T>();
- Type entityType = typeof(T);
- PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
- foreach (T item in list)
- {
- DataRow row = table.NewRow();
- foreach (PropertyDescriptor prop in properties)
- row[prop.Name] = prop.GetValue(item);
- table.Rows.Add(row);
- }
- return table;
- }
- public static IList<T> ConvertTo<T>(IList<DataRow> rows)
- {
- IList<T> list = null;
- if (rows != null)
- {
- list = new List<T>();
- foreach (DataRow row in rows)
- {
- T item = CreateItem<T>(row);
- list.Add(item);
- }
- }
- return list;
- }
- public static IList<T> ConvertTo<T>(DataTable table)
- {
- if (table == null)
- return null;
- List<DataRow> rows = new List<DataRow>();
- foreach (DataRow row in table.Rows)
- rows.Add(row);
- return ConvertTo<T>(rows);
- }
- //Convert DataRow into T Object
- public static T CreateItem<T>(DataRow row)
- {
- string columnName;
- T obj = default(T);
- if (row != null)
- {
- obj = Activator.CreateInstance<T>();
- foreach (DataColumn column in row.Table.Columns)
- {
- columnName = column.ColumnName;
- //Get property with same columnName
- PropertyInfo prop = obj.GetType().GetProperty(columnName);
- try
- {
- //Get value for the column
- object value = (row[columnName].GetType() == typeof(DBNull))
- ? null : row[columnName];
- //Set property value
- if (prop.CanWrite) //判断其是否可写
- prop.SetValue(obj, value, null);
- }
- catch
- {
- throw;
- //Catch whatever here
- }
- }
- }
- return obj;
- }
- public static DataTable CreateTable<T>()
- {
- Type entityType = typeof(T);
- DataTable table = new DataTable(entityType.Name);
- PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
- foreach (PropertyDescriptor prop in properties)
- table.Columns.Add(prop.Name, prop.PropertyType);
- return table;
- }
- }
将DataTable转换为List,将List转换为DataTable的实现类的更多相关文章
- LINQ返回DataTable类型 list转dataset 转换为JSON对象
using System.Web.Script.Serialization; using System.Collections.Generic; using System.Reflection; us ...
- C#之DataTable转List与List转Datatable
闲来无事,只有写代码啦,以下为DataTable转List与List转DataTable的两个方法,主要技术点用到了反射原理: /// <summary> /// 模型转换类 /// &l ...
- C# DataTable转List And List转DataTable
// DataTable转List: IList<HousesEntity> Ilist = TableAndList.ConvertTo<HousesEntity>(dt); ...
- “DataTable”是“System.Data.DataTable”和“Microsoft.Office.Interop.Excel.DataTable”之间的不明确的引用
“DataTable”是“System.Data.DataTable”和“Microsoft.Office.Interop.Excel.DataTable”之间的不明确的引用 造成这个错误的原因是,在 ...
- 多个不同的表合并到一个datatable中,repeater在绑定datatable
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
- 将两个列不同的DataTable合并成一个新的DataTable
/// <summary> /// 将两个列不同(结构不同)的DataTable合并成一个新的DataTable /// </summary> ...
- EasyUI - Datatable转Json and Json转Datatable
using System; using System.Data; using System.Linq; using System.Collections; using System.Collectio ...
- DataSet转换为泛型集合和DataRow 转成 模型类
public static class TransformToList { /// <summary> /// DataSet转换为泛型集合 /// </summary> // ...
- C#给DataTable添加序号、C#给DataTable添加合计、小计
/// <summary> /// 给DataTable添加序号 /// </summary> /// <param name= ...
- Datatable的查找和排序(Datatable.Select)
Datatable 是一种常用的数据结构.数据类型有点类似于数据库中的表结构.在没有使用优秀的orm框架前,大部分的数据库的数据都是先变为Datatable 然后再通过代码转换变成 object. ...
随机推荐
- struts的问题
将SSH框架进行整合的时候,将三者的jar包加入到lib下面,然后测试struts,结果页面显示不出来报404错误,可是路径没有问题 找到罪魁祸首是:原因两个:(1)在未用到spring的时候,先不要 ...
- 【Asp.net入门3-01】使用jQuery-创建示例项目
过去,浏览器除了显示HTML外,很少具有其他功能.因此,早期的Web应用程序需要依赖服务 器端代码来响应用户交互并执行数据操作.Web应用程序的交互依赖HTML表单元素和浏览器向服务 器发送数据的功能 ...
- Ansible10:Playbook的角色及包含
目录 说明 一.Playbook的包含 1.tasks包含 2.handlers包含 3.混合包含 二.角色(roles) 1.创建role 2.引用roles 3.pre_tasks和post_ta ...
- python中高阶函数与装饰器(3)
>>> f = lambda x: x * x>>> f<function <lambda> at 0x101c6ef28> >> ...
- 2017 清北济南考前刷题Day 2 morning
期望得分:100+30+60=190 实际得分:100+30+30=160 T1 最优方案跳的高度一定是单调的 所以先按高度排序 dp[i][j] 跳了i次跳到j 枚举从哪儿跳到j转移即可 #incl ...
- JedisCluster实践
1. Spring中运用JedisCluster http://blog.csdn.net/u010739551/article/details/52438101[spring集成 JedisClus ...
- 对一道pwnhub的一点点记录
一.通过ssh弱口令,建立socket5代理进内网. 1.修改proxychains配置文件vi /etc/proxychains.conf如下: 2.建立ssh隧道:ssh -qTfnN -D 70 ...
- js操作控制iframe页面的dom元素
1.代码1 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- Oracle新建数据库,并导入dmp文件
1:安装Oracle及新建数据库 Oracle 11g安装图解 http://www.cnblogs.com/qianyaoyuan/archive/2013/05/05/3060471.html h ...
- CSS权重的问题
important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符 1.行内样式,指的是html文档中定义的s ...