C#中如何使用DataTable通过反射转实体类
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章将为大家详细讲解有关C#中如何使用DataTable通过反射转实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。using System;using Sy
千家信息网最后更新 2025年01月16日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安全错误
数据库的锁怎样保障安全
宅男网络技术
服务器崩坏
溧阳软件开发
前端提交搜索框数据库
软件开发内审表
数据库关系模式改进方法
恒生互联网科技指数估值
迪士尼数据库
华三服务器管理口IP地址
网络安全博览会 西安 360
省份县市数据库excel
横山软件开发
千金市骨翻译软件开发
大数据库运算
数据库检索和查询
政府采购网怎么查询服务器价格
玉树租房网络安全
ubuntu云服务器
江北应用软件开发流程
服务器以太网发送100M
漯河软件开发视频
华为软件开发云平台首页
营造共筑网络安全屏障氛围
塔科夫怎么看当前游戏服务器
aconvert服务器
郑州尚源网络技术有限公司
陌陌聊天记录是否上传服务器
奉贤区技术软件开发报价方案
C 软件开发高级工程师招聘
天津免备案服务器虚拟主机