在.net项目研发过程中,有时候需要将从数据库中获取的DataTable数据类型,转换为泛型集合,然后运用LINQ对集合进行操作,我将此总结一下,方便你我他。

核心类:这是在网上搜索的万能类,具体实现思路,大家加入断点,运行一下,一切都会明白

  /// <summary>
/// 实体转换辅助类
/// </summary>
/// <typeparam name="T"></typeparam>
public class DatatableToList<T> where T : new()
{
public List<T> ConvertToList(DataTable dt)
{
//定义集合
List<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;
//检查Datable是否包含此列
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;
}
}

Model类

  public class AAA
{
public int PKID { set; get; }
public int ID { set; get; }
public string Name { set; get; }
public string Demo { set; get; }
}

逻辑操作

 string query = "SELECT * FROM AAA";//AAA类对应的数据表
DataTable dt = new DataTable();
DAOHelper dao = new DAOHelper();//
dt = dao.ExecuteDataTable(query);// 这两行代码是执行SQL语句,获取对应的DataTable数据,具体代码不做陈述
dao.Dispose();
DatatableToList<AAA> list = new DatatableToList<AAA>();//创建核心类 return list.ConvertToList(dt);执行转换方法

 总结:

大体总结一下,不是太详细,如有疑问或者批评,欢迎大家留言,

大体总结一下,不是太详细,如有疑问或者批评,欢迎大家留言,

也是自己的一份笔记,希望可以帮到大家。

最新文章

  1. python 中__name__ = &#39;__main__&#39; 的作用
  2. MySQL日期时间函数大全(转)
  3. Directory.GetCurrentDirectory和Application.StartupPath的区别
  4. 一、FreeMarker 模版开发指南 第一章 入门
  5. 使用sprintf打印float并控制小数位数时引起的问题
  6. akoj-1048-求某一整数序列的全排列问题
  7. plupload文件上传插件
  8. hdu 4493 Tutor
  9. 使用 WPF 创建单实例应用程序
  10. logo集锦
  11. Redis各个数据类型的使用场景
  12. SQL 数据库语言分析总结(一)
  13. string to int
  14. eclipse如何添加web dynamic project
  15. synchronized与volatile的区别及各自的作用、原理(学习记录)
  16. the project already contains a form or module named pcm001怎麼解決
  17. MapReduce中的partitioner
  18. javaweb笔记六
  19. Appscan_web安全测试工具 (含修改启动浏览器的方法)
  20. [LeetCode] Minimum Number of K Consecutive Bit Flips 连续K位翻转的最小次数

热门文章

  1. Anaconda使用
  2. 纯js代码生成可搜索选择下拉列表
  3. SQL列中含有换行符的查找和替换方法
  4. 简易安卓APP
  5. visualSVN 版本控制
  6. 读书笔记-JavaScript面向对象编程(三)
  7. 连接WiFi工具类
  8. web前端性能优化总结
  9. 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】
  10. [51nod1610]路径计数