C#中如何使用DataTable通过反射转实体类
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关C#中如何使用DataTable通过反射转实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。using System;using Sy
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
成都 多串口服务器
我的世界服务器粘液
数据库的物理结构依赖于
买票系统软件开发
怎么修改数据库文件地址
数据库一对多怎么画
河北网络安全和信息化
加强密码应用保障网络安全
猎魂觉醒服务器显示有角色选不了
鹏博士有多少个机房和服务器
摩尔庄园的天气和服务器有关系吗
服务器内存不够的表现有哪些
数据库编程if
青海量化积分管理软件开发电话
唐山千寻网络技术西安
操作目录数据库的语言是
网络安全的十大核心
软件开发分析设计实施测试
玉门小程序软件开发公司
网信杯网络安全大赛题库
达梦数据库备份会产生日志吗
数据库一对多怎么画
临朐软件开发初级教程哪家好
数据库技术相关知识
网络安全设备扫描工具
爬取登录数据库
软件开发系统部署设计
象山应用软件开发服务
航海王燃烧意志如何找到服务器
2021国家网络安全周通讯报道