C# List<T> 转 DataTable
2023-09-11 14:16:44 时间
网上有不少List<T> 转 DataTable 的代码 ,但都是要指定类型的,如: ListToDT<T>(List<T> xxxx) 这样的,这样用总觉得有点别扭,想实现如 List<T> item.toDataTable() 这样的转换操作,尝试了下现将主要代码记录如下。
主要转换类 Test.cs:
namespace Test
{
public static class UnitFunc
{
public static DataTable toDataTable(this object obj,string _tName = null)
{
Type t = obj.GetType();
dynamic ts = obj;
object tf = ts[0];
PropertyInfo[] pi = tf.GetType().GetProperties(BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public);
DataTable DT = new DataTable();
DT.TableName = _tName == null ? tf.GetType().ToString() : _tName;
foreach (PropertyInfo p in pi)
{
DT.Columns.Add(p.Name, p.PropertyType);
}
DataRow dr = null;
foreach (var v in ts)
{
dr = DT.NewRow();
foreach (PropertyInfo p in pi)
{
dr[p.Name] = p.GetValue(v, null);
}
DT.Rows.Add(dr);
}
return DT;
}
}
}
调用:
private static void ReadDataTableFromList()
{ //以下这段读取数据到List的代码是我自己写的一个小ORM框架,所以看过去可能跟一般的读数据库代码不一样,你们不用管这个,按自己的方法连接和读取数据库到List就行 //VMIS_model是数据表对象
ConnConfig conn = new ConnConfig(dbtype: DBType.SQLServer, connstring: SQLConnStr);
DBHelper<VMIS_model> vioDB = new DBHelper<VMIS_model>(conn);
List<VMIS_vio_model> list = vioDB.Select(whereSQL: "PlateNumber=@PN", sqlParams: new ORMParameter[]
{
new ORMParameter("@PN","车牌ABCDE")
});
//.toDataTable("xxx"),xxx为自定义表名参数,该参数为空则使用类名作为表名
DataTable DT = list.toDataTable("VMIS");
Console.WriteLine("数据加载到DataTable完成,共载入数据:" + DT.Rows.Count.ToString());
Console.WriteLine(JsonConvert.SerializeObject(DT, Formatting.Indented));
Console.WriteLine("DataTable表名:" + DT.TableName.ToString());
}
测试截图:
相关文章
- 工作总结 用, 隔开数据 后台不可以用 List<string> 接收 get请求直接通过浏览器发请求传数组或者list到后台
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- c# list数据去重,使用linq的GroupBy数据去重只需要三行代码
- C# DataTable类型 转换成 List集合类型的方法
- C#【通用方法】字节数组添加、移除、获取的方法类(妙用List<byte>,开发中常用)
- C#,雷卡曼数(Recamán Number)的算法与源代码
- C#,初学琼林(02)——数组和值计算(Sum,求和)的源程序,相关问题及解决之道
- c#基于socket的UDP服务器和客户端实例
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- c# 使用泛型集合List<T>
- 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢?
- C#遍历List并删除某个或者几个元素的方法
- C#把json对象序列(List<T>)转化为字符串时去掉值为null的字段
- C# List 过滤,排序,删除
- C# DataTable 和List之间相互转换的方法(转载)
- [.NET]c#.net程序中使用ffmpeg.exe来处理视频并生成上传视频的截图
- C# 多线程之List的线程安全问题