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 进行数据治理
本文由 网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...
随机推荐
- P1379 八数码难题 ( A* 算法 与 IDA_star 算法)
P1379 八数码难题 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初 ...
- Codeforces Round #725 (Div. 3) A~G 题解记录
补题链接:Here 1538A. Stone Game 数组 \(a\) 的大小为 \(n\) ,请问每次可以删除最左和最右侧的元素,请问最少执行多少次能删除掉数组中的最大值和最小值 (\(1\le ...
- [VS Code] 入门-自定键盘快捷键
Keyboard Shortcuts 自訂鍵盤快捷鍵 開啟設定面板 :點擊左下角管理圖示〉選擇「鍵盤快速鍵」. 編輯器開啟後,滑鼠移至變更項目上,點擊出現的變更圖示(橘框處),輸入要變更的快捷鍵組合. ...
- 基于HTML,CSS & Javascript 实现图像的自动轮播和手动导航按钮
不务正业的第n天(划掉 2020年年末在完成Web网页制作课程的大作战,在写代码的时候想到用HTML + CSS & Javascript制作一个图片轮播功能增强网页的功能 简单贴一下代码:注 ...
- 《深入理解计算机系统》(CSAPP)读书笔记 —— 第六章 存储器层次结构
在计算机系统模型中,CPU执行指令,而存储器系统为CPU存放指令和数据.实际上,存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构. 如果你的程序需要的数据是存储在CPU寄存器中 ...
- 完全免费白嫖 GPT-4 的终极方案!
原文链接:https://icloudnative.io/posts/completely-free-to-use-gpt4/ GPT-4 目前是世界上最强的多模态大模型,能力甩 GPT-3.5 好几 ...
- DDD领域驱动设计 (C# 整理自“老张的哲学”)
大话DDD领域驱动设计 概念 Domain Driven Design 领域驱动设计 第一个D(Domain): 领域:指围绕业务为核心而划分的实体模块. 第二个D(Driven): 驱动:这里的驱动 ...
- C#之RabbitMQ
本文内容整理自https://blog.csdn.net/by_ron/category_6167618.html RabbitMQ–环境搭建 能点进来相信你明白RabbitMQ是干什么的了,这个系列 ...
- 【日常踩坑】Debug 从入门到入土
写代码难免遇到 bug,调试解决 bug 的快慢很影响开发的效率.本文主要是梳理并记录下个人经常用的调试方法(主要以 C/C++ 的 segment fault 为例) 分类 根据调试时机与 bug ...
- 供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击
概述 本周(2024年01月15号),悬镜供应链安全实验室在Pypi官方仓库(https://pypi.org/)中捕获1起Py包投毒事件,投毒者利用包名错误拼写(typo-squatting)的攻击 ...