/// <summary>
/// DataSet转换为实体类
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="p_DataSet">DataSet</param>
/// <param name="p_TableIndex">待转换数据表索引</param>
/// <returns>实体类</returns>
public static T DataSetToEntity<T>(DataSet p_DataSet, int p_TableIndex)
{
if (p_DataSet == null || p_DataSet.Tables.Count < 0)
return default(T);
if (p_TableIndex > p_DataSet.Tables.Count - 1)
return default(T);
if (p_TableIndex < 0)
p_TableIndex = 0;
if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
return default(T); DataRow p_Data = p_DataSet.Tables[p_TableIndex].Rows[0];
// 返回值初始化
T _t = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] propertys = _t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (p_DataSet.Tables[p_TableIndex].Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data[pi.Name.ToUpper()] != DBNull.Value)
{
pi.SetValue(_t, p_Data[pi.Name.ToUpper()], null);
}
else
{
pi.SetValue(_t, null, null);
}
}
return _t;
} /// <summary>
/// DataSet转换为实体列表
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="p_DataSet">DataSet</param>
/// <param name="p_TableIndex">待转换数据表索引</param>
/// <returns>实体类列表</returns>
public static IList<T> DataSetToEntityList<T>(DataSet p_DataSet, int p_TableIndex)
{
if (p_DataSet == null || p_DataSet.Tables.Count < 0)
return default(IList<T>);
if (p_TableIndex > p_DataSet.Tables.Count - 1)
return default(IList<T>);
if (p_TableIndex < 0)
p_TableIndex = 0;
if (p_DataSet.Tables[p_TableIndex].Rows.Count <= 0)
return default(IList<T>); DataTable p_Data = p_DataSet.Tables[p_TableIndex];
// 返回值初始化
IList<T> result = new List<T>();
for (int j = 0; j < p_Data.Rows.Count; j++)
{
T _t = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] propertys = _t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (p_Data.Columns.IndexOf(pi.Name.ToUpper()) != -1 && p_Data.Rows[j][pi.Name.ToUpper()] != DBNull.Value)
{
pi.SetValue(_t, p_Data.Rows[j][pi.Name.ToUpper()], null);
}
else
{
pi.SetValue(_t, null, null);
}
}
result.Add(_t);
}
return result;
}

DataSet转换为实体类的更多相关文章

  1. Visual Studio 2015 将json转换为实体类

    最新写的一个接口需要接收json参数,然后序列化为实体类然后再进行后面的逻辑处理.因为json中键值对比较多,逐一去手写实体中的每个属性太麻烦,于是寻思是否有这样的工具可以将json转换为实体类. 经 ...

  2. (转)DATATABLE(DATASET)与实体类之间的互转.

    转自:http://www.cnblogs.com/zzyyll2/archive/2010/07/20/1781649.html dataset和实体类 之间的转换 //dataset转实体类  代 ...

  3. winfrom DataSet和实体类的相互转换

    最近做WInfrom项目,对表格和控件的数据绑定非常喜欢用实体类对象来解决,但是绑定以后 又怎么从控件中拿到实体类或者转换为datatable 或者dataset呢 经过在网上的搜索以及自己的改进 完 ...

  4. DataSet和实体类的相互转换

    最近做WInfrom项目,对表格和控件的数据绑定非常喜欢用实体类对象来解决,但是绑定以后 又怎么从控件中拿到实体类或者转换为datatable 或者dataset呢 经过在网上的搜索以及自己的改进 完 ...

  5. java将JSON字符串转换为实体类对象,基于net.sf.json实现

    @SuppressWarnings("unchecked") public static <T> T jsonToObject(String jsonString, C ...

  6. List<String>转换为实体类的属性【转】

    package model; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arr ...

  7. DataSet转化为实体类【转】

    分别转化单个类和集合两种方法. /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name=&q ...

  8. C#中怎样连接数据库并将查询结果转为实体类以及如何加入事务

    场景 新建一个程序,需要对数据的表进行查询并将查询结果转换为实体类,然后将多个实体类 再插入到另一个数据库的表中,执行插入的过程中要使用事务. 注: 博客主页: https://blog.csdn.n ...

  9. android开发学习 ------- json数据与实体类之间的相互转换

    在网络请求的时候,会返回给我们实体类,我们需要将实体类转化为json字符串,方便处理数据: 有时候也会将json数据转换为实体类. 在Android Studio中,json要互相转换,需要用到gso ...

随机推荐

  1. 小程序page中生命周期

    onLoad -- 页面被加载出来 onShow -- 页面显示出来后  退出后两小时进来,只会执行这个生命周期 onRady -- (逻辑层传给渲染层后才会执行)监听页面初次渲染完成 onHide ...

  2. CentOS如何安装MySQL8.0、创建用户并授权的详细步骤

    # 安装相关软件 yum install -y gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel make cmake # 获取MySQL ...

  3. 【leetcode】561. Array Partition I

    原题: Given an array of 2n integers, your task is to group these integers into n pairs of integer, say ...

  4. Python学习记录5-面向对象

    OOP 思想 以模块化思想解决工程问题 面向过程 vs 面向对象 由面向过程转向面向对象 常用名词 OO:面向对象 ooa:分析 ood:设计 oop:编程 ooI:实现 ooa -> ood ...

  5. css 之内容溢出滚动,隐藏滚动条(解决火狐浏览隐藏不了滚动条问题)

    解决火狐浏览隐藏不了滚动条问题 1.里层容器的width多17px,外层容器溢出隐藏,能兼容各个浏览器 .outContainer { width:350px; height:300px; overf ...

  6. linux驱动程序与菜单关联

  7. ARM体系结构与编程读书笔记——处理器的运行模式

    ARM处理器共有7种运行模式,如下表: 处理器模式 描述 用户模式(User, usr) 正常程序执行的模式 快速中断模式(FIQ, fiq) 用于高速数据传输和通道处理 外部中断模式(IRQ, ir ...

  8. php函数copy和rename的区别

    copy ( string source, string dest )将文件从 source 拷贝到 dest.如果成功则返回 TRUE,失败则返回 FALSE. 如果要移动文件的话,请用 renam ...

  9. python subprocess popen 静默模式(不弹出console控制台)

    python subprocess popen 静默模式(不弹出console控制台) import subprocess,sys IS_WIN32 = 'win32' in str(sys.plat ...

  10. zxy

    ZXY标准瓦片 发送反馈 SuperMap iServer .iEdge支持读取ZXY规范的地图瓦片,可对接 OpenStreetMap 等互联网的瓦地图服务.ZXY规范的地图瓦片规则如下:将地图全幅 ...