C# Model对象转DataTable
https://blog.csdn.net/a11112244444/article/details/78921200
https://www.cnblogs.com/chongde/articles/5992040.html
/// <summary>
/// 实体类转换成DataTable
/// </summary>
/// <param name="modelList">实体类列表</param>
/// <returns></returns>
public DataTable FillDataTable(List<T> modelList)
{
if (modelList == null || modelList.Count == 0)
{
return null;
}
DataTable dt = CreateData(modelList[0]);
foreach (T model in modelList)
{
DataRow dataRow = dt.NewRow();
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
{
dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
}
dt.Rows.Add(dataRow);
}
return dt;
}
/// <summary>
/// 根据实体类得到表结构
/// </summary>
/// <param name="model">实体类</param>
/// <returns></returns>
private DataTable CreateData(T model)
{
DataTable dataTable = new DataTable(typeof(T).Name);
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
{
dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
}
return dataTable;
}
————————————————
版权声明:本文为CSDN博主「张伟光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a11112244444/article/details/78921200
// 当字段类型是Nullable<>时
41 Type colType = pi.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
42 {
43
44 colType = colType.GetGenericArguments()[0];
45
46 }
47
48 dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
自己测试:
DataTable dataTable = new DataTable(typeof(OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo).Name);
foreach (System.Reflection.PropertyInfo propertyInfo in typeof(OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo).GetProperties())
{
DataColumn dc = new DataColumn();
dc.ColumnName = propertyInfo.Name;
// 当字段类型是Nullable<>时
Type colType = propertyInfo.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
dc.DataType = colType;
dataTable.Columns.Add(dc);
}
DataRow dataRow = dataTable.NewRow();
foreach (System.Reflection.PropertyInfo propertyInfo in typeof(OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo).GetProperties())
{
try
{
dataRow[propertyInfo.Name] = propertyInfo.GetValue(a, null);
}
catch
{
dataRow[propertyInfo.Name] = DBNull.Value;
}
}
dataTable.Rows.Add(dataRow);
List:
DataTable dataTable = new DataTable(typeof(OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo).Name);
foreach (System.Reflection.PropertyInfo propertyInfo in typeof(OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo).GetProperties())
{
Type colType = propertyInfo.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
dataTable.Columns.Add(new DataColumn(propertyInfo.Name, colType));
}
foreach (OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo model in modelList)
{
DataRow dataRow = dataTable.NewRow();
foreach (System.Reflection.PropertyInfo propertyInfo in typeof(OperationModel.ReturnSubsidiary.Business.OrderDetailByMainOrderInfo).GetProperties())
{
try
{
dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
}
catch
{
dataRow[propertyInfo.Name] = DBNull.Value;
}
}
dataTable.Rows.Add(dataRow);
}
C# Model对象转DataTable的更多相关文章
- DataTable和DataRow利用反射直接转换为Model对象的扩展方法类
DataTable和DataRow利用反射直接转换为Model对象的扩展方法类 /// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为 ...
- DataTable转List,DataTable转为Model对象帮助类
DataTable转List,DataTable转为Model对象帮助类 public class ModelConvertHelper<T> where T : new() { publ ...
- 利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理
利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理 2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论: ...
- 【Java EE 学习 69 上】【struts2】【paramsPrepareParamsStack拦截器栈解决model对象和属性赋值冲突问题】
昨天有同学问我问题,他告诉我他的Action中的一个属性明明提供了get/set方法,但是在方法中却获取不到表单中传递过来的值.代码如下(简化后的代码) public class UserAction ...
- model对象之setter方法使用,解决去除空格和将数字转成字符串展示方法
1.系统中手机号注册的时候,不能含有前后空格.在model对象中过滤~! private String mobile; public String getMobile() { return mobil ...
- django的model对象转化成dict
今天发现一个掉渣天的方法,Django的forms包里面有一个方法:model_to_dict(),它可以将一个model对象转化成dict. In [1]: from apps.dormitory. ...
- Json转model对象,model转json,解析json字符串
GitHub链接: https://github.com/mozhenhau/D3Json D3Json 通过swift的反射特性,把json数据转换为model对象,本类最主要是解决了其他一般jso ...
- ASP.NET的MVC中Model对象字段的数…
ASP.NET的MVC中Model对象字段的常用数据说明属性: Required——该字段不允许为空. MaxLength——设置数组或字符串最大长度. StringLength——设置字符串最小和最 ...
- 将Model对象转换成json文本或者json二进制文件
将Model对象转换成json文本或者json二进制文件 https://github.com/casatwy/AnyJson 注意:经过测试,不能够直接处理字典或者数组 主要源码的注释 AJTran ...
- 超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
超简易复制Model对象(为后续备忘录设计模式博文做铺垫) 复制整个Model需要实现NSCopy协议,可以想象是非常麻烦的一件事情,今天我跟大家分享一个不需要你做任何操作的复制Model对象的方法, ...
随机推荐
- Rocketmq 如何处理消息积压 ?
一.消息积压发现 1.Console入口 A.延迟数量(Delay) 消息积压数量,即当前Topic还剩下多少消息未处理,该值越大,表示积压的消息越多 B.最后消费时间(LastConsumeTime ...
- 根据返回值,判断是否执行下一步的方法(Run Keyword And Return Status指令的使用)
场景分析: 上图"通用模版测试"内容 满足,如果当前页面存在这条数据,即结束执行本条用例,自动执行下一条.如果没有,则调用新建模版关键字,执行新建模版. 脚本如下 1配置运费模版 ...
- Traefik,想说爱你不容易:一场动态反向代理的心累之旅
前言:技术选型的初心 在微服务盛行.容器部署逐渐常态化的今天,"动态反向代理"显得尤为重要. Traefik 凭借其原生支持 Docker.自动生成路由.集成 Let's Encr ...
- Java编程--简单的Proxy程序(代理设计模式)
有时候对象要完成某项任务(功能)需要很多步骤,而这些步骤全部交给对象自己完成显然是不现实的,就像我们人要吃饭,你总不能要求我们每个人都去种地.打面.做饭一样,我们只需要完成其中的吃饭这一核心操作就可以 ...
- 【记录】OJ|区间DP|石子合并(环形)
1. 题干 描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出一个算法,计算出将N堆石子 ...
- 王炸!SpringBoot+MCP 让你的系统秒变AI小助手
王炸!SpringBoot+MCP 让你的系统秒变AI小助手 感觉本篇对你有帮助可以关注一下我的微信公众号(深入浅出谈java),会不定期更新知识和面试资料.技巧!!! 一.MCP 是什么? MCP( ...
- VS Code + Cline + 魔搭MCP Server 实现抓取网页内容。
MCP的诞生,可以说是为AI带来一波新的活力. MCP(Model Context Protocol)是由Anthropic公司在2024年11月推出的一种开放标准协议,旨在为大型语言模型(LLM ...
- 干货分享:Dify中4种核心变量详解!
在 Dify 工作流(Workflow 和 Chatflow)的实现中,"变量"做为最基础.最核心的组件发挥着不可或缺的作用,因为它承载了不同节点间数据传递的作用. 也就是说,我们 ...
- 痞子衡嵌入式:i.MXRT10xx系列ROM的UART SDP设置不同波特率的方法与实践
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT10xx系列ROM的UART SDP设置不同波特率的方法. 恩智浦 i.MXRT 四位数系列目前分为 RT10xx 和 RT ...
- HarmonyOS NEXT从图库选择资源上传到服务器或者把网络资源下载到图库
用户需要分享文件.保存图片.视频等用户文件时,开发者可以通过系统预置的文件选择器(FilePicker),实现该能力.通过Picker访问相关文件,将拉起对应的应用,引导用户完成界面操作,接口本身无需 ...