DataSet类型转换实体
查询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类型转换实体的更多相关文章
- (转)DATATABLE(DATASET)与实体类之间的互转.
转自:http://www.cnblogs.com/zzyyll2/archive/2010/07/20/1781649.html dataset和实体类 之间的转换 //dataset转实体类 代 ...
- DataSet转换为实体类
/// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...
- winfrom DataSet和实体类的相互转换
最近做WInfrom项目,对表格和控件的数据绑定非常喜欢用实体类对象来解决,但是绑定以后 又怎么从控件中拿到实体类或者转换为datatable 或者dataset呢 经过在网上的搜索以及自己的改进 完 ...
- DataSet和实体类的相互转换
最近做WInfrom项目,对表格和控件的数据绑定非常喜欢用实体类对象来解决,但是绑定以后 又怎么从控件中拿到实体类或者转换为datatable 或者dataset呢 经过在网上的搜索以及自己的改进 完 ...
- DataSet转化为实体集合类
/// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...
- 使用 AutoMapper 映射 IDataReader、DataSet、DataTable 到实体类
AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...
- DataSet转化为实体类【转】
分别转化单个类和集合两种方法. /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name=&q ...
- 泛型集合与DataSet相互转换
一.泛型转DataSet /// <summary> /// 泛型集合转换DataSet /// </summary> /// <typeparam name=" ...
- oop典型应用:实体类
1. 要知道这个图三者的关系 2.实体类属性类型与数据库类型 3.readonly与const的对比 两者的区别如下: ①const能修饰类中的字段(field)或者局部变量(local variab ...
- 使用 Apache Atlas 进行数据治理
本文由 网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...
随机推荐
- 【每日一题】26.codeJan与旅行 (贪心)
补题链接:Here 算法涉及:贪心 思路: 首先,我们处在p位置,显然要么向左走到相邻的城市,要么向右走走到相邻的城市. 有一个不会证明但观察到的结论,从这两个位置走的话,只有四种可能. 可能1:一直 ...
- NSSCTF Round#13 web专项
rank:3 flask?jwt? 简单的注册个账号,在/changePassword 下查看页面源代码发现密钥<!-- secretkey: th3f1askisfunny --> ,很 ...
- 2022 开源之夏 | Serverless Devs 陪你“变得更强”
Serverless 是近年来云计算领域热门话题,凭借极致弹性.按量付费.降本提效等众多优势受到很多人的追捧,各云厂商也在不断地布局 Serverless 领域.但是随着时间的发展,Serverles ...
- Xmanager连接linux服务器的桌面
在办公室使用xshell通过22端口访问linux服务器大家都很熟悉,但有的时候在办公室要远程linux服务器上的桌面应用,该如何实现. 环境准备 客户端:win10 服务器:centos7.9 一. ...
- Linux一键安装docker脚本,含ubuntu和centos
将脚本保存为docker_install.sh,可以上传git,到服务器中,git clone下来后,sh docker_install.sh即可自动安装 ubuntu实现 # 以Ubuntu为例 # ...
- freeswitch的3XX重定向
概述 sip协议标准RFC3261中,对3XX重定向有明确的定义. freeswitch中如何使用3XX redirect的特性,如何落地,应用场景有哪些? 环境 centos:CentOS rel ...
- 每天学五分钟 Liunx 0010 | 软件篇: RPM 和 YUM
1. RPM RPM(RedHat Package Manager),顾名思义是 RedHat 的软件包管理器.它遵循 GPL 规则且功能强大好用,从而逐渐运用到其它 Liunx 发行版中,包括 Fe ...
- @Import 源码解析
转发请注明出处: @Import通过快速导入的方式实现把实例加入spring的IOC容器中:一般@EnableXXX注解是通过@Import实现具体的功能(@EnableXXX注解上加个@Import ...
- Chrome 控制台 换行编写js调试代码
转载请注明出处: 在 chrome 浏览器的console 控制台编写 js 调试或验证代码时,每输一行换行时,就会执行当前行的函数,再重新换行输入时,就会将之前的代码忽略,这种方式就会导致 chro ...
- Linux系列之文件和目录权限
前言 我们知道,root用户基本上可以在系统中做任何事.其他用户有更多的限制,并且通常被收集到组中.你把有类似需求的用户放入一个被授予相关权限的组,每个成员都继承组的权限. 让我们看一下: 查看权限( ...