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;
}

最新文章

  1. C#连接Oracle数据库(直接引用dll使用)
  2. VS2012+LUA环境搭建
  3. Jstl简单应用
  4. android:layout_weight
  5. YII2 Activedataprovider 类分页的使用
  6. POJ 1410 Intersection(判断线段交和点在矩形内)
  7. date类型时间比较大小
  8. SharePoint 2010 获取列表全部定义方法
  9. C#_wpf_userinput_数据绑定_后台对象改变,界面数据也变化
  10. Android开发必备:颜色选择
  11. MOOC即Massive Open Online Course的缩写
  12. RIA Test:try catch 对 Error #1009 (无法访问空对象引用的属性或方法)的处理
  13. Nethogs - 网络流量监控工具
  14. Codeforces340 E. Iahub and Permutations
  15. 回顾:前端模块化和AMD、CMD规范(全)
  16. pyglet--旋转的矩形
  17. JAVA 动态代理学习记录
  18. .Net 鉴权授权
  19. python显示多个图表
  20. 53. Maximum Subarray (Array; DP)

热门文章

  1. Matplotlib 绘制误差条图
  2. django使用pycharm目录打开不正确导致的问题
  3. Kibana 的 docker 镜像使用
  4. Spring-Data-Redis 入门学习
  5. Spring Cloud微服务安全实战_3-3_API安全之流控
  6. axios post方式请求x-ww格式的数据
  7. wordpress nginx详细环境配置安装命令和相关问题解决
  8. Solr的核心操作案例
  9. JVM 发生内存溢出的 8 种原因、及解决办法
  10. gcc O2优化选项对内嵌汇编以及函数递归调用的影响