转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465591.html

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Reflection;

namespace System.Data

{

public static class DataTableHelper

{

#region 利用反射把DataTable的数据写到单个实体类

public static T ToSingleEntity<T>(this System.Data.DataTable dtSource)

{

if (dtSource == null)

{

return default(T);

}

if (dtSource.Rows.Count != 0)

{

Type type = typeof(T);

Object entity = Activator.CreateInstance(type);         //创建实例

foreach (PropertyInfo entityCols in type.GetProperties())

{

if (!string.IsNullOrEmpty(dtSource.Rows[0][entityCols.Name].ToString()))

{

entityCols.SetValue(entity, Convert.ChangeType(dtSource.Rows[0][entityCols.Name], entityCols.PropertyType), null);

}

}

return (T)entity;

}

return default(T);

}

#endregion

#region 利用反射把DataTable的数据写到集合实体类里

public static List<T> ToListEntity<T>(this System.Data.DataTable dtSource)

{

if (dtSource == null)

{

return null;

}

List<T> list = new List<T>();

Type type = typeof(T);

foreach (DataRow dataRow in dtSource.Rows)

{

Object entity = Activator.CreateInstance(type);         //创建实例

foreach (PropertyInfo entityCols in type.GetProperties())

{

if (!string.IsNullOrEmpty(dataRow[entityCols.Name].ToString()))

{

entityCols.SetValue(entity, Convert.ChangeType(dataRow[entityCols.Name], entityCols.PropertyType), null);

}

}

list.Add((T)entity);

}

return list;

}

#endregion

}

}

利用反射把DataTable自动赋值到Model实体(自动识别数据类型)的更多相关文章

  1. 利用反射将Datatable、SqlDataReader转换成List模型

    1. DataTable转IList public class DataTableToList<T>whereT :new() { ///<summary> ///利用反射将D ...

  2. 使用反射将DataTable的数据转成实体类

    利用反射避免了硬编码出现的错误,但是实体类的属性名必须和数据库名字对应(相同) 1.利用反射把DataTable的数据写到单个实体类 /// <summary> ///利用反射把DataT ...

  3. DataTable数据赋值给Model通用方法

    注:该文属本人原创,今后项目中发现该方法存在BUG会实时更新,转载记得附上原文出处,方便大家获得最新代码. 相信大家在做项目中,经常会根据不同的表new各种不同的Model,当需要对Model进行实例 ...

  4. 利用反射实现DataTable 与 List<T> 转换

    今天上班不太忙,就想着总结一下反射.扩展方法.以及lambda表达式的用法,自己就写了个小DEMO记录一下,希望各位大牛们看到后觉得不对的地方请及时提出.这篇文章中我只说明我的用法,作为一个备忘,基本 ...

  5. .NET中利用反射来实现自动映射两个对象中的数据成员

    在以前的项目开发之中,经常会遇到这样一个问题:比如在外面项目的架构设计之中,我们采用MVC和EntityFramework来构建一个Web应用程序.比如我们采用常用的多层架构,例如有Presentat ...

  6. 利用反射给JAVABEAN实例赋值

    为简化和统一,需要给javabean实例统一赋值,实现代码如下(已测试) import java.util.ArrayList; import java.util.Date; import java. ...

  7. codesmith 自动生成C# model 实体模板

    <%-- Name:自动生成 Author: 陈胜威 Description: 直接生成model类 --%> <%@ Template Language="C#" ...

  8. 通过.net反射技术实现DataReader转换成Model实体类列表

     public static T ReaderToModel<T>(IDataReader dr) { try {  using (dr) {  if (dr.Read()) {  Typ ...

  9. C# DataTable转List<T>--利用反射

    /// <summary> /// 利用反射将Datatable转换为List<T>对象 /// </summary> /// <typeparam name ...

随机推荐

  1. 深入浅出ES6(三):生成器 Generators

    作者 Jason Orendorff  github主页  https://github.com/jorendorff ES6生成器(Generators)简介 什么是生成器? 我们从一个示例开始: ...

  2. EXPRESS.JS再出发

    那个那个MEAN的书,看得七七八八,有了大概,现在就要一样一样的加深记忆啦.. EXPRSS.JS的东东,网上有现成入门书籍: 第一期代码测试: var express = require('expr ...

  3. Ubuntu 启动栏添加eclipse图标

    sudo gedit /usr/share/applications/eclipse.desktop [Desktop Entry] Name=Eclipse Comment=c project ma ...

  4. Linux Shell 数字计算与比较

    直接上脚本, 使用$(())以及$[]进行数字计算 数值比较:n1 -eq n2检查n1是否等于n2         n1 -le n2检查n1是否小于等于n2n1 -ge n2检查n1是否大于等于n ...

  5. JavaEE5种常见的设计模式

    1.工厂模式:比如你写了个应用,里面用到了数据库的封装,你的应用可以今后需要在不同的数据库环境下运行,可能是oracle,db2,sql server等, 那么连接数据库的代码是不一样的,你用传统的方 ...

  6. 从svn删除文件夹和文件

    由于项目开始放在自己项目组的一个服务器上,而且svn也是自己在该服务器上搭建的,但是不知道是什么原因,svn上的代码被误删了.为了更稳定地使用svn,所以使用公司的svn来管理代码. 运维将不是最新版 ...

  7. 几种C#程序读取MAC地址的方法

    原文:几种C#程序读取MAC地址的方法 以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可. 1 通过IPConfig命令读取MAC地 ...

  8. iOS KVO的原理

    KVO(Key Value Observing),是观察者模式在Foundation中的实现.   KVO的原理   简而言之就是:   1.当一个object有观察者时,动态创建这个object的类 ...

  9. 内存单元按字节编址,地址0000A000H~0000BFFFH共有几个存储单元

    一般可以这样:按十六进制(bffff-a000)+1=1fff+12000H=2x16x16x16=81928192/1024=8 最后是8k或者按二进制bfff-a000=0001 1111 111 ...

  10. BAT面经

    http://bbs.csdn.net/topics/390734210?page=4 注意评论以及文章原地址