C# 将DataTable反射成实体类(高效)

2024-09-06 07:20

本文主要是介绍C# 将DataTable反射成实体类(高效),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

工具类实现(直接复制粘贴) 

    public class DataTableModelConvertHelper{public static List<T> ConvertList<T>(DataTable table) where T : class{List<ResultArgs<string, string, Type, System.Reflection.PropertyInfo>> lstArgses = new List<ResultArgs<string, string, Type, System.Reflection.PropertyInfo>>();var props = typeof(T).GetProperties();foreach (var cln in props)//获取实体类的属性及属性类型{lstArgses.Add(new ResultArgs<string, string, Type, System.Reflection.PropertyInfo>(){Value1 = string.Empty,//Table.ColName 数据表列名Value2 = cln.Name,//Entity.Name 实体类属性名Value3 = cln.PropertyType,//Entity.Type 实体类属性类型Value4 = cln});}foreach (DataColumn cln in table.Columns)//获取数据表DataTable的列名{foreach (var resultArgse in lstArgses){if (resultArgse.Value2.ToLower() == cln.ColumnName.ToLower())//都转换为小写做匹配{resultArgse.Value1 = cln.ColumnName;}}}List<T> lst = new List<T>();foreach (DataRow row in table.Rows){var info = Activator.CreateInstance<T>();foreach (var ocn in lstArgses){if (!string.IsNullOrEmpty(ocn.Value1)){try{//Console.WriteLine("ocn.Value1:{0};ocn.Value2:{1}", ocn.Value1, ocn.Value2);if (ocn.Value4 != null && row[ocn.Value1] != DBNull.Value){var objValue = DataTableModelConvertHelper.ChangeType(row[ocn.Value1], ocn.Value3);//Console.WriteLine("objValue:{0}", objValue);ocn.Value4.SetValue(info, objValue, null);}}catch (Exception ex){Console.WriteLine(ex.ThrowExceptionDetail());}}}lst.Add(info);}return lst;}#region = ChangeType =private static object ChangeType(object obj, Type conversionType){return ChangeType(obj, conversionType, Thread.CurrentThread.CurrentCulture);}private static object ChangeType(object obj, Type conversionType, IFormatProvider provider){#region NullableType nullableType = Nullable.GetUnderlyingType(conversionType);if (nullableType != null){if (obj == null){return null;}return Convert.ChangeType(obj, nullableType, provider);}#endregionif (typeof(System.Enum).IsAssignableFrom(conversionType)){return Enum.Parse(conversionType, obj.ToString());}return Convert.ChangeType(obj, conversionType, provider);}#endregion}public class ResultArgs<T, G>{public T Value1 { set; get; }public G Value2 { set; get; }}public class ResultArgs<T, G, H>{public T Value1 { set; get; }public G Value2 { set; get; }public H Value3 { set; get; }}public class ResultArgs<T, G, H, J>{public T Value1 { set; get; }public G Value2 { set; get; }public H Value3 { set; get; }public J Value4 { set; get; }}

 调用方式

//RequestInfo是实体类
//table是Datatable
//将DataTable表格数据转换为Model实体类代码
var lst = DataTableModelConvertHelper.ConvertList<RequestInfo>(table);

这篇关于C# 将DataTable反射成实体类(高效)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141372

相关文章

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面