博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# DataTable转List<T>--利用反射
阅读量:6811 次
发布时间:2019-06-26

本文共 1923 字,大约阅读时间需要 6 分钟。

///         /// 利用反射将Datatable转换为List
对象 ///
///
集合
/// datatable对象 ///
public List
DataTableToList
(DataTable dt) where T : new() { //定义集合 List
ts = new List
(); //定义一个临时变量 string tempName = string.Empty; //遍历dataTable中的数据行 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)) { //取值 object value = dr[tempName]; //如果非空,则赋给对象的属性 if (value != DBNull.Value) { //这里添加判断的原因:比如double转folat不能隐式转换,而枚举类型又不能使用Convert.ChangeType if (pi.PropertyType.IsEnum) { pi.SetValue(t, value, null); } else { //ChangeType属于强转可能存在数据丢失,但是pi.PropertyType是对应你类成员的类型 pi.SetValue(t, Convert.ChangeType(value, pi.PropertyType), null); } } } } //对象添加到泛型集合中 ts.Add(t); } return ts; }

  注:请引用反射using

转载于:https://www.cnblogs.com/lbonet/p/9934698.html

你可能感兴趣的文章
SQL物化视图 自动更新 定时刷新
查看>>
express框架应用接入阿里云函数计算
查看>>
几行代码实现ofo首页小黄人眼睛加速感应转动
查看>>
317TABLE ACCESS BY INDEX ROWID BATCHED3
查看>>
MapReduce Shuffle原理 与 Spark Shuffle原理
查看>>
题解 P3386 【【模板】二分图匹配】
查看>>
李彦宏:人工智能的互联网时代已经到来
查看>>
游标概念和作用(转载)
查看>>
python中全局变量、局部变量、类变量、实例变量简析
查看>>
大众公布量子计算北京交通新一代产品亮相
查看>>
武器加持无人机,远程操控就可以抓获犯罪团伙
查看>>
MySQL数据库迁移
查看>>
IOS应用提交所需的ICON
查看>>
第90届中国电子展聚焦行业新热点,拉动产业链上下游快速发展
查看>>
量子力学多世界解释:这个世界的你是穷光蛋 另一个世界是亿万富翁(文中有赠书活动)...
查看>>
不要小看了互联网智能锁,它正撬动整个多元化居住产品时代!
查看>>
工人小明的新同事
查看>>
AutoIt3(AU3)开发的分辨率快速设置工具
查看>>
OPC UA的安全性分析以及正确使用指南
查看>>
关于PLC高速计数器使用
查看>>