List和DataTable互转
/// <summary>
/// List和DataTable互转
/// </summary>
static class ListUtility
{ /// <summary>
/// 将List转换成DataTable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
public static DataTable ListToDataTable<T>(this IList<T> data, string strTableName = "")
{
try
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable dtReturn = new DataTable(strTableName);
for (int i = ; i < properties.Count; i++)
{
PropertyDescriptor property = properties[i];
dtReturn.Columns.Add(property.Name, property.PropertyType);
}
object[] values = new object[properties.Count];
foreach (T item in data)
{
for (int i = ; i < values.Length; i++)
{
values[i] = properties[i].GetValue(item);
}
dtReturn.Rows.Add(values);
}
return dtReturn;
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 获得集合实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public static List<T> DataTableToList<T>(DataTable dt)
{
if (dt == null || dt.Rows.Count == )
{
return null;
}
List<T> list = new List<T>();
T entity = default(T);
foreach (DataRow dr in dt.Rows)
{
entity = Activator.CreateInstance<T>();
PropertyInfo[] pis = entity.GetType().GetProperties();
foreach (PropertyInfo pi in pis)
{
if (dt.Columns.Contains(pi.Name))
{
if (!pi.CanWrite)
{
continue;
}
if (dr[pi.Name] != DBNull.Value)
{
Type t = pi.PropertyType;
if (t.FullName == "System.Guid")
{
pi.SetValue(entity, dr[pi.Name].ToString(), null);
}
else
{
pi.SetValue(entity, dr[pi.Name], null);
} }
}
}
list.Add(entity);
}
return list;
}
}
List和DataTable互转的更多相关文章
- json datatable互转(真正能用的-原创)
网上有不少的转换类 可是不全 或者有错误 我现在贴一个 js 和C# 互转代码 希望能帮到需要的童鞋 首先C#转成 json /// <summary> /// DataT ...
- C#实现XML与DataTable互转
private string ConvertDataTableToXML(DataTable xmlDS) { MemoryStream stream = null; XmlTextWriter wr ...
- TXT 与 DataTable 互转
//********************************************************************************************* publ ...
- 集合List与DataTable互转
/// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...
- DataTable,List,Dictonary互转,筛选及相关写法
1.创建自定义DataTable /// 创建自定义DataTable(一) 根据列名字符串数组, /// </summary> /// <param name="sLi ...
- List实体类、DataTable与xml互转
序列化常用Attribute讲解说明 [XmlRootAttribute("MyCity", Namespace="abc.abc", IsNullable=f ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- DateTable与List<T>相互转换 及JSON与DataTable(DataSet)相互转化
http://www.360doc.com/content/13/0712/09/10504424_299336674.shtml Linq处理List数据 http://blog.163.com/l ...
- C#.net开发 List与DataTable相互转换 【转】
http://blog.csdn.net/shuizhaoshui/article/details/51425527 在.NET开发中,操作关系型数据库提取数据经常用到DataTable.ASP.NE ...
随机推荐
- Linux服务器上搭建codis集群之——安装前环境准备
codis是redis的分布式集群模式,由豌豆荚开源,本文简单记录一下它的集群搭建方法. 首先介绍一下我的实验环境.三台配置相同的虚拟机, [root@test ~]# ip a|grep -w &q ...
- k8s系列---故障
kubectl get namespace prom Terminating 45h namespace 出现Terminating 状态,一直删不掉 解决: 1:导出namespace的json文件 ...
- 学习CSS之如何改变CSS伪元素的样式
一.CSS伪元素 CSS 伪元素用于向某些选择器设置特殊效果. 伪元素的用法如下: selector:pseudo-element {property:value;} CSS 类也可以和伪元素搭配使用 ...
- Day5前端学习之路——盒模型和浮动
盒子模型 浮动float 一.盒子模型 (1)content内容区 width和height是框内容显示的区域——包括框内的文本内容,以及表示嵌套子元素的其他框,也可以使用min-width.max- ...
- (数据科学学习手札77)基于geopandas的空间数据分析——文件IO
本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们对geopandas中的 ...
- AndroidStudio中使用XML和Java代码混合控制UI界面实现QQ相册照片列表页面
场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建Androi ...
- Hash存储模型、B-Tree存储模型、LSM存储模型介绍
每一种数据存储系统,对应有一种存储模型,或者叫存储引擎.我们今天要介绍的是三种比较流行的存储模型,分别是: Hash存储模型 B-Tree存储模型 LSM存储模型 不同存储模型的应用情况 1.Hash ...
- Appium超详细环境搭建for Mac
兜兜转转试用了一圈自动化框架后,回归到appium,与一年之前相比,appium有了很大的改变:1.iOS 9 之前一直以 instruments 下的 UIAutomation为驱动底层技术(弊 ...
- tensorflow安装问题
环境 windows7 开始的时候,打算在最新版本下安装tensorflow体验下,python是3.6 anaconda是最新的5.0.1 结果执行 pip3 install --upgrade ...
- mssql sqlserver 如何将一个日期数据转换为"年份-月份"的格式呢?
摘要: 下文讲述在sqlserver数据库中,将日期数据转换为指定格式的方法分享,如下所示: 实验环境:sqlserver 2008 R2 实现思路: 实现方法1: 使用year函数和month函数获 ...