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对象的方法, ...
随机推荐
- python的typer写cli脚本如此简单
# typer_demo.py import typer from pathlib import Path from typing import Optional from typing_extens ...
- Service Reliability Management: A Comprehensive Overview
Service Reliability Management: A Comprehensive Overview Service reliability management is a critica ...
- java 实现发送邮件功能
最近工作项目中需要使用到邮件功能,参考网上的文章,实现了一个基于java的邮件发送功能:直接上代码: 1.依赖 <dependency> <groupId>org.spring ...
- 什么是 Java 中的 JIT(Just-In-Time)?
Java 中的 JIT(Just-In-Time)编译器 1. JIT 的定义 JIT(Just-In-Time)编译器是一种用于 Java 虚拟机(JVM)的动态编译技术.它在 Java 程序运行时 ...
- thinkphp里__PUBLIC__的使用
1.默认值 __PUBLIC__常量默认指向当前项目根目录下的pulic目录, 例如:www下有一个blog项目目录,blog下一般有application.Home.public.Thinkphp ...
- 【完结】【一本通提高】KMP做题记录
题目编号 标题 估分 正确 提交 Y 2076 Problem A [一本通提高篇KMP]剪花布条 --- 156 293 Y 2077 Problem B [一本通提高篇KMP]Radio Tr ...
- dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
进行框架依赖发布的时候,应用程序需要有 dotnet runtime 运行时才能跑起来.在 dotnet 9 之前,通常都是需要安装到系统的 Program File 文件夹下的全局 dotnet 运 ...
- 银河麒麟系统 jenkins docker 部署 自动化打包部署git 项目
Jenkins 是一个开源的自动化服务器,主要用于实现 持续集成(CI) 和 持续交付/部署(CD),其核心作用在于通过自动化流程提升软件开发和交付的效率与质量 一.环境准备 1. 安装 Docker ...
- Git提交修正的核心技巧:git commit --amend 的专业实践与深度解析
结论先行 git commit --amend 是用于 修正最近一次提交 的高效工具,可修改提交信息.追加遗漏文件或调整代码内容,避免冗余提交记录,保持提交历史的简洁性.适用于本地未推送的提交修复场景 ...
- 工具 | Hfish
0x00 简介 HFish是一款社区型免费蜜罐. 下载地址 HFish下载: HFish下载 0x01 功能说明 支持多种蜜罐服务 支持自定义Web蜜罐 支持流量牵引 支持端口扫描感知能力 支持多种告 ...