很多时候需要将DataTable转换成一组model,直接对model执行操作会更加方便直观。

代码如下:

  public static class DataTableToModel
{
public static List<T> ConvertToModel<T>(this DataTable dt)
{
if (dt == null || dt.Rows.Count == )
{
return null;
} var result = new List<T>(); var objType = typeof(T);
var properties = objType.GetProperties();
var columnNames = GetDataTableColumnNames(dt); foreach (DataRow dr in dt.Rows)
{
var obj = objType.Assembly.CreateInstance(objType.FullName);
//var obj = Activator.CreateInstance(objType);
foreach (var property in properties)
{
if (columnNames.Contains(property.Name))
{
var cellValue=dr[property.Name];
object propertyValue=cellValue; //非泛型
if (!property.PropertyType.IsGenericType)
{
propertyValue = cellValue == null ? null : Convert.ChangeType(cellValue, property.PropertyType);
}
else //泛型Nullable<>
{
Type genericTypeDefinition = property.PropertyType.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof(Nullable<>))
{
propertyValue = cellValue == null ? null : Convert.ChangeType(cellValue, Nullable.GetUnderlyingType(property.PropertyType));
}
} property.SetValue(obj, propertyValue, null);
}
} result.Add((T)obj);
} return result;
} private static HashSet<string> GetDataTableColumnNames(DataTable dt)
{
var columnNames = new HashSet<string>();
foreach (DataColumn column in dt.Columns)
{
columnNames.Add(column.ColumnName);
}
return columnNames;
}
}

DataTable转换成List<T>的更多相关文章

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

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

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

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

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

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

  4. 将DataTable转换成CSV文件

    DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表.CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记 ...

  5. 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)

    public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...

  6. C#将DataTable转换成list的方法

    本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary>   /// 酒店评论列表-分页  /// </su ...

  7. 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

    领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...

  8. 简单的反射 把datatable 转换成list对象

    /// <summary> /// 把datatable 转换成list对象 /// </summary> /// <typeparam name="T&quo ...

  9. C# DataTable 转换成JSON数据

    原文:C# DataTable 转换成JSON数据 using System; using System.Collections.Generic; using System.Data; using S ...

随机推荐

  1. OCJP-试题集合 | 对象的比较

    Boolean b1 = new Boolean(true); Boolean b2 = new Boolean(true); 下面哪个能得到true的结果: A b1 == b2 B b1.equa ...

  2. Ubuntu 开机自启动工具 update-rd.d 使用详解

    常用命令: $ sudo update-rc.d nginx defaults      #增加服务 $ sudo update-rc.d -f nginx remove    #移除服务 Linux ...

  3. XSS攻击:获取浏览器记住的明文密码

    作者:余弦(@evilcos) 0x01. XSS获取明文密码的多种方式 我已经感受到Web潮流带来的巨大革新,尤其是最近HTML5越来越火.浏览器们在客户端瓜分着这个Web OS,只要是对用户体验好 ...

  4. sqlite 跨数据库查询

    try { $dbh = new PDO($dbrootemp, null, null); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_ ...

  5. 搭建openfire Android 客户端学习和开发【二】spark源码导入eclipse

    首先声明下 这是我在eoe上转载的 写的很好就摘抄了... 第一步 下载源码 svn下载,下载地址:spark:http://svn.igniterealtime.org/svn/repos/spar ...

  6. ListView异步加载网络图片完美版之双缓存技术

    本示例参考学习了一个国外的示例:http://code.google.com/p/android-imagedownloader/,有兴趣的同学下载研究一下. 问题描述:在这一篇博客中将会为大家讲解如 ...

  7. rails命令避免直接操作数据库

    文章是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com 今天在数据库里新增人员的时候出了点小问题,有人员重复了,以至于要删除一些,大师和pp指导完成的. $r ...

  8. [codeforces 549]G. Happy Line

    [codeforces 549]G. Happy Line 试题描述 Do you like summer? Residents of Berland do. They especially love ...

  9. Coursera台大机器学习课程笔记8 -- Linear Regression

    之前一直在讲机器为什么能够学习,从这节课开始讲一些基本的机器学习算法,也就是机器如何学习. 这节课讲的是线性回归,从使Ein最小化出发来,介绍了 Hat Matrix,要理解其中的几何意义.最后对比了 ...

  10. 百度图片爬虫-python版

               self.browser=imitate_browser.BrowserBase()            self.chance=0            self.chanc ...