DataTable或者DataRow转换对象
public static IEnumerable<T> ConvertObject<T>(DataTable dt) where T : new()
{ var v = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
List<PropertyInfo> Fields = new List<PropertyInfo>();
foreach (var s in v)
{
if (dt.Columns.Contains(s.Name))
Fields.Add(s);
} foreach (DataRow dr in dt.Rows)
{
T t = new T();
foreach (var s in Fields)
{
if (object.Equals(dr[s.Name], DBNull.Value)) continue;
s.SetValue(t, dr[s.Name], null);
}
yield return t;
}
} public static T ConvertObject<T>(DataRow dr) where T : new()
{ var v = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); T t = new T();
foreach (var s in v)
{
if (dr.Table.Columns.Contains(s.Name))
{
s.SetValue(t, dr[s.Name], null);
} } return t; }
Bug,
1.如果泛型对象(T)属性的类型和DataTable列的类型不一致,抛异常 ---懒得解决
2.DBNull.value转换失败,新方法
public static T ConvertObject<T>(DataRow dr) where T : new()
{ var v = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); T t = new T();
foreach (var s in v)
{
if (dr.Table.Columns.Contains(s.Name))
{
if (object.Equals(dr[s.Name], DBNull.Value)) continue;
{
s.SetValue(t, dr[s.Name]);
}
} } return t; }
DataTable或者DataRow转换对象的更多相关文章
- 【转】给DataTable和DataRow扩展方法,直接转换为对象集合或对象
/// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为对象集合或对象 /// 补充说明:此扩展类可以极大的简化操作,但是性能低下,大数据以 ...
- DataTable和DataRow利用反射直接转换为Model对象的扩展方法类
DataTable和DataRow利用反射直接转换为Model对象的扩展方法类 /// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为 ...
- 菜鸟类库诞生记二:通过反射转换DataRow为对象
虽然大数据量的环境下,通过反射转换DataRow为对象性能会很低,但是在数据量适中的时候,这样能够减少很多的代码量,性能也确实不错. 所以在数据量不是很大的情况下,推荐使用. 如果数据量很大,可以使用 ...
- c# datarow[] 转换成 datatable, List<T> 转datatable
c# datarow[] 转换成 datatable, List<T> 转datatable DdataRow[]转成Datatable private DataTable ToDat ...
- C# DataRow[]转换DataTable
DataTable dt = ... DataRow[] dr = dt.Select("ID=14"); dt = dr.CopyToDataTable();
- 关于datatable linq的转换
关于datatable datarow DataTable paraval = GetParaVal(DateCondition, strUrl, Page, RowPage, iYearMonthN ...
- DataTable转换为Model实体对象
记得在学校的时候,接触得最多的就是SqlHelper,每次在读取的时候不管是DataTable还是DataReader转换为实体对象的时候是最恼火的,因为要写很多代码,而且没有什么意义.后面接触到了反 ...
- C#DataTable DataSet DataRow区别详解
DataSet 是C#中用来存储数据库数据的.其实,它的作用是在内存中模拟数据库.我们现实生活中的数据库从大到小的基本结构类似于:数据库实例,表,列,行.在C#语言中,我们在内存中也模拟出了一个这样的 ...
- DataSet、DataTable、DataRow 复制
DataSet.DataTable.DataRow 复制 DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个Da ...
随机推荐
- Vim篇
Vim编辑器中的一些常用命令: 1:shift+* , 选取光标所在处的整个字符,并查找.(十分方便),快捷键gd 2:set nu , 显示各行行号,使得基于行的命令更方便. 3:shift+% , ...
- 绑定repeater时三目运算加特殊结果处理
<%#((Convert.ToDouble().ToString() != ).ToString(%
- Android上传头像代码,相机,相册,裁剪
activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- android 学习随笔十二(网络:使用异步HttpClient框架)
使用异步HttpClient框架发送get.post请求 在https://github.com/ 搜索 asyn-http https://github.com/search?utf8=✓& ...
- maven相关
1. 创建/导入maven项目时 eclipse默认jdk版本配置:http://blog.csdn.net/lzj0470/article/details/42292021 2. eclipse 使 ...
- java对redis的基本操作(转)
本文转自:http://www.cnblogs.com/edisonfeng/p/3571870.html 2.主要类 1)功能类 package com.redis; import java.uti ...
- Jni层回调java代码【转】
本文转载自:http://www.linuxidc.com/Linux/2014-03/97562.htm JNI是Java Native Interface的缩写,是Java平台的重要特性,使得Ja ...
- 161116、springmvc自己实现防止表单重复提交(基于注解)
原理:在去某个页面直接生成一个随机数(这里使用的是UUID)并放入session中,用户提交表单时将这个随机数传入服务端与session中的值进行比较,如果不不存在或不相等,则认为是重复提交:如果相等 ...
- Java的多线程+Socket 后台 Ver 2.0
package com.wulala; import java.io.IOException;import java.net.ServerSocket;import java.net.Socket; ...
- Backup: Date and Time in Perl6
时间 Date #Operators ==, <, <= , >, >=, !=, eq, lt, le # Methods $date = Date.new(YEAR, MO ...