C#对象、List<>转DataTable
public static DataTable ObjectToTable(object obj)
{
try {
Type t;
if (obj.GetType().IsGenericType)
{
t = obj.GetType().GetGenericTypeDefinition();
}
else
{
t = obj.GetType();
}
if(t== typeof(List<>)||
t==typeof(IEnumerable<>))
{
DataTable dt = new DataTable();
IEnumerable<object> lstenum=obj as IEnumerable<object>;
if(lstenum.Count()>0)
{
var ob1 = lstenum.GetEnumerator();
ob1.MoveNext();
foreach (var item in ob1.Current.GetType().GetProperties())
{
dt.Columns.Add(new DataColumn() { ColumnName = item.Name });
}
//数据
foreach (var item in lstenum)
{
DataRow row = dt.NewRow();
foreach (var sub in item.GetType().GetProperties())
{
row[sub.Name] = sub.GetValue(item, null);
}
dt.Rows.Add(row);
}
return dt;
}
}
else if (t == typeof(DataTable))
{
return (DataTable)obj;
}
else //(t==typeof(Object))
{
DataTable dt = new DataTable();
foreach (var item in obj.GetType().GetProperties())
{
dt.Columns.Add(new DataColumn() { ColumnName=item.Name });
}
DataRow row= dt.NewRow();
foreach (var item in obj.GetType().GetProperties())
{
row[item.Name] = item.GetValue(obj, null);
}
dt.Rows.Add(row);
return dt;
}
}catch(Exception ex)
{
}
return null;
}
C#对象、List<>转DataTable的更多相关文章
- 对象列表转换为DataTable或DataTable转换为对象列表.
/**********************************************************************************/ // 说明: 数据转换工具. ...
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)
点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预 ...
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其 ...
- C# 对象克隆,DataTable转LIST
public class ConvertHelper<T> where T : new() { private static string module = "ConvertHe ...
- 【类库】容器对象(List、DataTable、 DataView、Dictionary)
首先申明一下,写此博文的目的是纪录一下,知识都是现成的,只是整理一下,为了让自己更容易看懂,比在其他地方更容易明白.因为它们太常用了,不忍心每次都去用那么长的时间查看MSDN,希望能在这里用理少的时间 ...
- DataSet与DataTable对象
DataSet与DataTable对象 摘自:http://www.cnblogs.com/fttbfttb/articles/1509662.html DataSet对象 DataSet是ADO.N ...
- 项目中常用方法总结(将将DataTable数据集映射到实体对象)【转】
本篇把项目中用到的一些通用方法总结出来, 这些方法因为经常需要在项目中用到,所以把它们归纳在一起, 形成一个.dll 文件是一个理想的选择. 这样也便于日后缩短开发周期. 一. 把一个DataGrid ...
- DataTable对象
DataTable表示一个内存中的关系数据表,可以独立创建和使用,也可以有其他.NET Framework对象使用,最常见的情况是作为DataSet的成员使用.DataTable对象由DataColu ...
- 实体对象,List泛型 转换为DataTable
/// <summary> /// 实体对象转换DataTable /// </summary> /// <param name ...
- ADO.NET对象的详解
1. Connection 类 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能 ...
随机推荐
- lc 0227
目录 ✅ 1189. "气球" 的最大数量 描述 解答 cpp py improved py ✅ 784. 字母大小写全排列 描述 解答 c: backTrace !! power ...
- mysql中utf8字符集的设置及character_set_database属性修改
mariadb配置文件修改字符集: [mysqld] atadir=/usr/local/mysql/datasocket=/tmp/mysql.sock # Disabling symbolic-l ...
- 具体的client-server通信模型以及最为常用的通信模式
实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的. 在已有的IP负载均衡技术中: 1)有通过网络地址转换(Network Address Translation)将 ...
- P1478
昨天花一下午时间,把 codeblocks 代码 highlight 改了改,感觉还不错 :) 咳咳.还是说题吧. 这道题利用贪心思想,先去除所有够不着的,然后按使用力气 $ y_i $ 从小到大排序 ...
- Vue-设置默认路由选中
需求分析: 一个导航组件,需要其中一个是选中状态,并且样式呈现高亮,选中的导航对应的页面也需要展示出来. 功能实现: router-link内置有一个选中状态,当处于当前路由时,会给 router-l ...
- put、patch与post区别
idempotent 幂等的 如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的: idempotent的意思是如果相同的操作再執行第二遍第三遍,結果還是一樣. POST方法 ...
- javascript的阻止默认事件和阻止冒泡事件
这两个方面的知识,在妙味课堂中有听过,再次复习一下: 原文来自:[http://www.cnblogs.com/Essence/p/4266618.html] 事件冒泡与默认行为 在说事件冒泡之前 ...
- 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用滑动平均
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...
- 关于ASA的TCP MSS
About the TCP MSS The TCP maximum segment size (MSS) is the size of the TCP payload before any TCP a ...
- SSL 证书格式普及,PEM、CER、JKS、PKCS12
根据不同的服务器以及服务器的版本,我们需要用到不同的证书格式,就市面上主流的服务器来说,大概有以下格式: .DER .CER,文件是二进制格式,只保存证书,不保存私钥. .PEM,一般是文本格式,可保 ...