C#中如何使用DataTable通过反射转实体类
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关C#中如何使用DataTable通过反射转实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。using System;using Sy
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
互联网黑科技
互联网和科技创新
互联网巨头科技公司
互联网科技股票
互联网与未来科技
互联网科技排名
银优互联网科技有限公司
新浪科技互联网
长亮科技互联网金融
撒么互联网科技公司
互联网巨头投资的硬核科技
现代科技和互联网有关系吗
温州喔噻互联网科技有限公司
浙江互联网科技研学营
互联网科技公司实习生
电子科技大学互联网创业大赛
伊宁互联网科技做什么的
唯美互联网科技
米泉互联网科技专业怎么样
安徽零酒互联网科技有限公司
互联网 新科技
互联网科技汛
隆华科技工业互联网
科技互联网大厂
互联网科技产业特征
链环科技传统企业怎么转型互联网
互联网科技如何创业
南博望互联网科技有限公司
上海钢联属于互联网科技股吗
城市宝互联网科技有限公司