DataTable与List<T>互转

1.List<T>转DataTable


public static DataTable ListToDataTable<T>(List<T> list)
{
if(list==null || list.Count==)
{
return new DataTable();
}
//获取T下所有的属性
Type entityType = list[].GetType();
PropertyInfo[] entityProperties = entityType.GetProperties(); DataTable dt = new DataTable("data");
for(int i=; i<entityProperties.Length; i++)
{
dt.Columns.Add(entityProperties[i].Name);
}
foreach (var item in list)
{
if(item.GetType() != entityType)
{
throw new Exception("要转换集合元素类型不一致!")
}
//创建一个用于放所有属性值的数组
object[] entityValues = new object[entityProperties.Length];
for(int i=; i<entityProperties.Length; i++)
{
entityValues[i] = entityProperties[i].GetValue(item, null);
} dt.Rows.Add(entityValues)
}
return dt;
}

2.DataTable转List<T>


public static IList<T> ConvertToModel(DataTable dt)
{
// 定义集合
IList<T> ts = new List<T>();
// 获得此模型的类型
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name; // 检查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if (!pi.CanWrite) continue;
object value = dr[tempName];
if (value != DBNull.Value)
pi.SetValue(t, value, null);
}
}
ts.Add(t);
}
return ts;
}

【C#常用方法】1.DataTable与List<T>的相互转换的更多相关文章

  1. C#中DataTable与XML格式的相互转换

    1.DataTable转换成XML public string ConvertDataTableToXML(DataTable xmlDS) { MemoryStream stream = null; ...

  2. DataTable / DataSet 与 xml 的相互转换

    之前做DataTable和DataSet转xml一直使用XmlSerializer 序列化完成.今天发现新方法,哇咔咔方便了很多.还不用担心Name为空时报错 static void Main(str ...

  3. C#开发中常用方法2------json转DataTable

    /// <summary>/// 将json转换为DataTable/// </summary>/// <param name="strJson"&g ...

  4. 一个DataTable赋值给另一个DataTable的常用方法

    DataView view = new DataView();view.Table = DataTableA;view.RowFilter = "itemType = 'book'" ...

  5. Newtonsoft.Json 与 DataTable的相互转换

    1.这里下载:http://www.newtonsoft.com/products/json/ 安装:    解压下载文件,得到Newtonsoft.Json.dll    在项目中添加引用 2.引入 ...

  6. DataTable数据与Excel表格的相互转换

    using Excel = Microsoft.Office.Interop.Excel; private static Excel.Application m_xlApp = null; /// & ...

  7. List<T> 和DataTable的相互转换

    我用的将集合类转换为DataTable 的方法 /// <summary> /// 将集合类转换成DataTable /// </summary> /// <param ...

  8. 项目中常用方法总结(将将DataTable数据集映射到实体对象)【转】

    本篇把项目中用到的一些通用方法总结出来, 这些方法因为经常需要在项目中用到,所以把它们归纳在一起, 形成一个.dll 文件是一个理想的选择. 这样也便于日后缩短开发周期. 一. 把一个DataGrid ...

  9. List,泛型和Datatable 的相互转换

    public static DataTable ToDataTableTow(IList list) { DataTable result = new DataTable(); ) { Propert ...

随机推荐

  1. Nginx服务加到systemctl

    当我们编译安装nginx服务后,可以用手执行启动脚本也可以作为服务的形式运行. 添加启动文件:vim /usr/lib/systemd/system/nginx.service [Unit] Desc ...

  2. 并发编程(六)--进程/线程池、协程、gevent第三方库

    一.进程/线程池 1.进程池 (1)什么是进程池 如果需要创建的子进程数量不大,可以直接利用multiprocess中的Process来创建.但是当需要创建上百个或上千个,手动创建就较为繁琐,这时就可 ...

  3. 不同平台下int类型、指针类型的数据大小

    不同平台下int类型.指针类型的数据大小 对于int类型数据和指针类型数据的大小,是非常基础的问题. 在一个具体的平台上,确定他们最好的办法就是使用sizeof(type)对其进行判断,返回当前数据类 ...

  4. 部署LNMP应用平台

    一.LNMP应用平台概述 1.概述:LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/ ...

  5. AMD 锐龙三代系列台式机处理器(台积电7纳米工艺)

    AMD 锐龙 5 AMD 锐龙 5 3500X 处理器 6核心6线程,基准时钟频率3.6GHz,最大加速时钟频率4.1GHz,一级缓存384KB,总二级缓存3MB,三级缓存32MB,内存支持最高DDR ...

  6. nginx访问限制

    nginx的访问控制 1.http_access_module   基于ip的访问控制 允许的访问配置 不允许的访问配置 server { listen 80; server_name localho ...

  7. 学习:API断点

    API的介绍:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而 ...

  8. 【mybatis】JdbcType 与Oracle、MySql数据类型对应关系

  9. Django Flatpage设置

    参考链接:https://docs.djangoproject.com/en/1.11/ref/contrib/flatpages/ 知识点: 通过django.site数据库记录表,对应域名和请求站 ...

  10. P2827 蚯蚓

    目录 题目链接 思路 代码 题目链接 咕咕咕 思路 如果是\(q=0\)的话,相当于维护一个集合,支持查询最大值,删除最大值,添加新值,用\(set\)即可实现 如果是\(q>0\)的话,我们可 ...