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 进行数据治理
本文由 网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...
随机推荐
- Go--变量的声明
Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性. 变量是一段或多段用来存储数据的内存,在go中,变量一旦被定义,一定要使用,不然会报错 内建变量类型 ...
- Python使用pandas库读取csv文件,并分组统计的一个例子
代码: # coding=gbk # 从HostWrites.csv读取数据并分组统计 import pandas import datetime print "\r\n从 HostWrit ...
- Codeforce 1288C. Two Arrays(DP组合数学,n个数选择m个数,单调不递减个数,排列组合打表N*N)
https://codeforces.com/problemset/problem/1288/C Examples input 2 2 output 5 input 10 1 output 55 in ...
- 题解 - Japanese Student Championship 2021
前言:这场的题解由于蓝桥杯比赛拖延几天才发 关于本篇题解,目前还是有部分题没有解答出来正在加油补题ing 补题链接:Here A - Competition 题意:给定 \(X,Y,Z\) 代表的意义 ...
- 技术分享 | 不同格式标准SBOM清单横评:SPDX、CDX和DSDX
为了保证安全性.降低开发.采购及维护的相关成本,复杂动态的现代软件供应链对软件资产透明度提出了更高的要求.使用清晰的软件物料清单(SBOM)收集和共享信息,并在此基础上进行漏洞.许可证和授权管理等,可 ...
- vue 状态管理 一、状态管理概念和基本结构
系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...
- 十二、docker仓库
系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...
- sipp3.6多方案压测脚本
概述 SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多. 有时候我们需要模拟现网的生产环境来压测,就需要同时有多个sipp脚本运行,并且需要不断的调整呼叫并发. 通过python脚本 ...
- Winform的使用
Winform是什么 以下内容,来自朝夕教育课程,没有基础的可以去朝夕学学.这里主要是为了方便我自己回顾查询 创建Winform程序 Program类 Winform项目结构介绍 Winform控件简 ...
- lucene.net全文检索(一)相关概念及示例
相关概念 站内搜索 站内搜索通俗来讲是一个网站或商城的"大门口",一般在形式上包括两个要件:搜索入口和搜索结果页面,但在其后台架构上是比较复杂的,其核心要件包括:中文分词技术.页面 ...