C#中如何使用DataTable通过反射转实体类
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关C#中如何使用DataTable通过反射转实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。using System;using Sy
千家信息网最后更新 2025年11月07日C#中如何使用DataTable通过反射转实体类
这篇文章将为大家详细讲解有关C#中如何使用DataTable通过反射转实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;namespace MySqlHelper{ public static class DataTableToModel { /// /// DataTable通过反射获取单个像 /// public static T ToSingleModel(this DataTable data) where T : new() { try { T t = data.GetList(null, true).Single(); return t; } catch (Exception e) { return new T(); } } /// /// DataTable通过反射获取单个像 /// 前缀 /// 是否忽略大小写,默认不区分 /// public static T ToSingleModel(this DataTable data, string prefix, bool ignoreCase = true) where T : new() { T t = data.GetList(prefix, ignoreCase).Single(); return t; } /// /// DataTable通过反射获取多个对像 /// /// /// /// public static List ToListModel(this DataTable data) where T : new() { List t = data.GetList(null, true); return t; } /// /// DataTable通过反射获取多个对像 /// /// 前缀 /// 是否忽略大小写,默认不区分 /// private static List ToListModel(this DataTable data, string prefix, bool ignoreCase = true) where T : new() { List t = data.GetList(prefix, ignoreCase); return t; } private static List GetList(this DataTable data, string prefix, bool ignoreCase = true) where T : new() { List t = new List(); int columnscount = data.Columns.Count; if (ignoreCase) { for (int i = 0; i < columnscount; i++) data.Columns[i].ColumnName = data.Columns[i].ColumnName.ToUpper(); } try { var properties = new T().GetType().GetProperties(); var rowscount = data.Rows.Count; for (int i = 0; i < rowscount; i++) { var model = new T(); foreach (var p in properties) { var keyName = prefix + p.Name + ""; if (ignoreCase) keyName = keyName.ToUpper(); for (int j = 0; j < columnscount; j++) { if (data.Columns[j].ColumnName == keyName && data.Rows[i][j] != null) { string pval = data.Rows[i][j].ToString(); if (!string.IsNullOrEmpty(pval)) { try { // We need to check whether the property is NULLABLE if (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) { p.SetValue(model, Convert.ChangeType(data.Rows[i][j], p.PropertyType.GetGenericArguments()[0]), null); } else { p.SetValue(model, Convert.ChangeType(data.Rows[i][j], p.PropertyType), null); } } catch (Exception x) { throw x; } } break; } } } t.Add(model); } } catch (Exception ex) { throw ex; } return t; } }} 关于"C#中如何使用DataTable通过反射转实体类"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
反射
篇文章
实体
C#
前缀
单个
多个
大小
更多
不错
实用
内容
文章
知识
j++
参考
帮助
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
php 重启服务器
末日前置入侵服务器
深信服日志服务器端口
学软件开发必看啥书
360网络安全是什么意思
大连软件开发软件公司
什么是中央数据库
list变成数据库中in
玉树网络技术哪家强
sql数据库安全性实验报告
实时数据库国内
云顶之弈最难的服务器
小学网络安全宣传信息简报
共用服务器的两路监控要几个硬盘
自己搭建邮件服务器有什么好处
动物物种编目数据库
家用服务器如何搭建小白
上游dns 服务器国内
通辽软件开发tlyltd
软件开发自己能做吗
软件开发怎么知道是你开发的
中国软件开发区名单
ftp服务器下载软件
选择外国服务器安全吗
国家网络安全等保
坚决守护网络安全
网络安全周手抄报 四年级
宝山区私人软件开发生产厂家
uml怎么连接数据库
参数化网格软件开发