查询DataSet类型无法对每条数据进行循环转换,利用泛型对象使用反射机制将对象相关属性进行自动赋值。

  • 基础调用
DataSet ds = DbHelper.Query(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
return DataRowToList_List_Genericity<ListData>(ds.Tables[0].Rows);
} //ListData实体
public class ListData
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public string Address{ get; set; }
}
  • 泛型List<object>

/// <summary>
/// List<object>数据转换-泛型
/// </summary>
/// <param name="dataRowCollection"></param>
/// <returns></returns>
private List<T> DataRowToList_List_Genericity<T>(DataRowCollection dataRowCollection)
{
List<T> list = new List<T>();
for (int i = 0; i < dataRowCollection.Count; i++)
{
T model = Activator.CreateInstance<T>();
var row = dataRowCollection[i];
// 获取T属性列表
var properties = typeof(T).GetProperties();
foreach (var property in properties)
{
// 判断DataRow是否包含与属性名相同的列
if (row.Table.Columns.Contains(property.Name))
{
// 获取DataRow中与属性名相同的值
var value = row[property.Name];
// 将值转换为属性的类型
var convertedValue = Convert.ChangeType(value, property.PropertyType);
// 设置属性的值
property.SetValue(model, convertedValue);
}
}
list.Add(model);
}
return list;
}
  • 泛型Object对象

/// <summary>
/// Object数据转换-泛型
/// </summary>
/// <param name="dataRowCollection"></param>
/// <returns></returns>
private T DataRowToList_Object_Genericity<T>(DataRowCollection dataRowCollection)
{
T model = Activator.CreateInstance<T>();
var row = dataRowCollection[0];
// 获取T属性列表
var properties = typeof(T).GetProperties();
foreach (var property in properties)
{
// 判断DataRow是否包含与属性名相同的列
if (row.Table.Columns.Contains(property.Name))
{
// 获取DataRow中与属性名相同的值
var value = row[property.Name];
// 将值转换为属性的类型
var convertedValue = Convert.ChangeType(value, property.PropertyType);
// 设置属性的值
property.SetValue(model, convertedValue);
}
}
return model;
}

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

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

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

  2. DataSet转换为实体类

    /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...

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

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

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

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

  5. DataSet转化为实体集合类

    /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...

  6. 使用 AutoMapper 映射 IDataReader、DataSet、DataTable 到实体类

    AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...

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

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

  8. 泛型集合与DataSet相互转换

    一.泛型转DataSet /// <summary> /// 泛型集合转换DataSet /// </summary> /// <typeparam name=" ...

  9. oop典型应用:实体类

    1. 要知道这个图三者的关系 2.实体类属性类型与数据库类型 3.readonly与const的对比 两者的区别如下: ①const能修饰类中的字段(field)或者局部变量(local variab ...

  10. 使用 Apache Atlas 进行数据治理

    本文由  网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...

随机推荐

  1. 【每日一题】26.codeJan与旅行 (贪心)

    补题链接:Here 算法涉及:贪心 思路: 首先,我们处在p位置,显然要么向左走到相邻的城市,要么向右走走到相邻的城市. 有一个不会证明但观察到的结论,从这两个位置走的话,只有四种可能. 可能1:一直 ...

  2. NSSCTF Round#13 web专项

    rank:3 flask?jwt? 简单的注册个账号,在/changePassword 下查看页面源代码发现密钥<!-- secretkey: th3f1askisfunny --> ,很 ...

  3. 2022 开源之夏 | Serverless Devs 陪你“变得更强”

    Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...

  4. Xmanager连接linux服务器的桌面

    在办公室使用xshell通过22端口访问linux服务器大家都很熟悉,但有的时候在办公室要远程linux服务器上的桌面应用,该如何实现. 环境准备 客户端:win10 服务器:centos7.9 一. ...

  5. Linux一键安装docker脚本,含ubuntu和centos

    将脚本保存为docker_install.sh,可以上传git,到服务器中,git clone下来后,sh docker_install.sh即可自动安装 ubuntu实现 # 以Ubuntu为例 # ...

  6. freeswitch的3XX重定向

    概述 sip协议标准RFC3261中,对3XX重定向有明确的定义. freeswitch中如何使用3XX redirect的特性,如何落地,应用场景有哪些? 环境 centos:CentOS  rel ...

  7. 每天学五分钟 Liunx 0010 | 软件篇: RPM 和 YUM

    1. RPM RPM(RedHat Package Manager),顾名思义是 RedHat 的软件包管理器.它遵循 GPL 规则且功能强大好用,从而逐渐运用到其它 Liunx 发行版中,包括 Fe ...

  8. @Import 源码解析

    转发请注明出处: @Import通过快速导入的方式实现把实例加入spring的IOC容器中:一般@EnableXXX注解是通过@Import实现具体的功能(@EnableXXX注解上加个@Import ...

  9. Chrome 控制台 换行编写js调试代码

    转载请注明出处: 在 chrome 浏览器的console 控制台编写 js 调试或验证代码时,每输一行换行时,就会执行当前行的函数,再重新换行输入时,就会将之前的代码忽略,这种方式就会导致 chro ...

  10. Linux系列之文件和目录权限

    前言 我们知道,root用户基本上可以在系统中做任何事.其他用户有更多的限制,并且通常被收集到组中.你把有类似需求的用户放入一个被授予相关权限的组,每个成员都继承组的权限. 让我们看一下: 查看权限( ...