博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
把DataTable转换为List<T>
阅读量:5010 次
发布时间:2019-06-12

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

前一篇有学习过《》

那此篇,将是学习反向,把DataTable转换为List<T>。这个方法使用的较多。很多情况之后,从数据读出来的数据是DataSet或是DataTable。需要把它们转换为List<T>之后,再转换为json。

下面Insus.NET写一个扩展方法:

 

public static List
ToList
(this DataTable dt) { var dataColumn = dt.Columns.Cast
().Select(c => c.ColumnName).ToList(); var properties = typeof(T).GetProperties(); string columnName = string.Empty; return dt.AsEnumerable().Select(row => { var t = Activator.CreateInstance
(); foreach (var p in properties) { columnName = p.Name; if (dataColumn.Contains(columnName)) { if (!p.CanWrite) continue; object value = row[columnName]; Type type = p.PropertyType; if (value != DBNull.Value) { p.SetValue(t, Convert.ChangeType(value, type), null); } } } return t; }).ToList(); }
Source Code

 

接下来,手动创建一个DataTable,添加一些数据行。对象是引用前一篇的对象:

 

class Ba    {        public void ConvertDataTableToListToTestDemo()        {            DataTable dt = new DataTable();            dt.Columns.Add("ID", typeof(int));            dt.Columns.Add("Account", typeof(string));            dt.Columns.Add("Email", typeof(string));            dt.Rows.Add(1, "A0001", "A0001@email.com");            dt.Rows.Add(2, "A0002", "A0002@email.com");            dt.Rows.Add(3, "A0003", "A0003@email.com");            List
ays = dt.ToList
(); ays.ForEach(delegate (Ay ay) { Console.WriteLine(ay.ToString()); }); Console.WriteLine("\n\r"); } }
Source Code

 

上图红框即是#23行代码,就是本篇的核心代码,把DataTable转换为List<T>。

 

在控制台测试一下代码:

 

转载于:https://www.cnblogs.com/insus/p/8043805.html

你可能感兴趣的文章
GUID和自增ID的比较_top
查看>>
枚举1--求小于n的最大素数
查看>>
第二百三十一节,Bootstrap 介绍
查看>>
vi/vim 三种模式的操作
查看>>
JAVA面向对象三大特性总结
查看>>
手动构建Servlet项目的流程
查看>>
javascript词法分析
查看>>
从100PV到1亿级PV网站架构演变
查看>>
scala安装
查看>>
guid
查看>>
Python中出现“TabError: inconsistent use of tabs and spaces in indentation”问题的解决
查看>>
ajax请求
查看>>
js学习总结----DOM增删改和应用
查看>>
希尔伯特矩阵(Hilbert matrix)
查看>>
1)对于键相等数组相加
查看>>
5)二叉树
查看>>
(20)sopel算法
查看>>
学习总结 javascript 闭包
查看>>
实验吧一个小坑注入
查看>>
Centos 6.5使用Bumblebee关闭N卡,冷却你的电脑
查看>>