DataTable转List<T>

类:

 public class ModelConvertHelper<T> where T : new()
    {
        public static List<T> ConvertToModel(DataTable dt)
        {
            List<T> ts = new List<T>();//定义集合
            //Type type = typeof(T);//获得此模型的类型
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                PropertyInfo[] propertys = t.GetType().GetProperties();//获取此模型的公共属性
                foreach (PropertyInfo pi in propertys)
                {
                    if (dt.Columns.Contains(pi.Name))
                    {
                        if (!pi.CanRead)
                        {
                            continue;
                        }
                        object value = dr[pi.Name];
                        if (value != DBNull.Value)
                        {
                            pi.SetValue(t, value, null);
                        }
                    }
                }
                ts.Add(t);
            }
            return ts;
        }
    }

调用示例:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add(new System.Data.DataColumn("Code", typeof(string)));
            dt.Columns.Add(new System.Data.DataColumn("ChineseName", typeof(string)));
            dt.Columns.Add(new System.Data.DataColumn("UserApplicant", typeof(string)));
            dt.Columns.Add(new System.Data.DataColumn("Email", typeof(string)));
            dt.Columns.Add(new System.Data.DataColumn("CreateDate", typeof(string)));

            for (int i = 0; i < 100; i++)
            {
                DataRow dr = dt.NewRow();
                dr[0] = "0801";
                dr[1] = "赵孟蒙";
                dr[2] = "mengmeng.zhao";
                dr[3] = "[email protected]";
                dr[4] = DateTime.Now.ToString();
                dt.Rows.Add(dr);
            }

            List<person> list = ModelConvertHelper<person>.ConvertToModel(dt);
        }
    }

    public class person
    {
        public string Code { get; set; }
        public string ChineseName { get; set; }
        public string UserApplicant { get; set; }
        public string Email { get; set; }
        public string CreateDate { get; set; }
    }
}
时间: 2024-08-08 17:14:15

DataTable转List<T>的相关文章

将DataTable转换为List,将List转换为DataTable的实现类

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace Xmh.DBUnit { /// <summary> /// 将DataTable转换为List,将

删除datatable中的行

今天遇到一问题,无论如何也删除不干净datatable.我想全部删除.但总是得不到想要的结果. for (int i = 0; i < dt.Rows.Count; i++) { //dt.Rows.Remove(dt.Rows[i]); dt.Rows[i].Delete(); Console.Write("dr.rows.count" + dt.Rows.Count + "\r\n删除了数据" + i.ToString() + "\r\n&quo

datatable

datatable添加数据 datatable dt=new datatable(); dt.columns.add("string");     //添加列 datarow dr=dt.newrow(); dr[0]="string"; dt.rows.add(dr);          //添加行

c# 之DataTable的扩展方法

由于太懒了,很久没更新了.毕业了,得好好装逼学习了,不能一心想着完了. 由于公司中的项目大量的使用DataTable,而每次对datatable进行操作的时候需要写很多相同的代码,所以秉着 装逼而学习 的态度,于是撸了几个扩展方法,记录下来,学习下.     class Program     {         public DataTable LinqTable = new DataTable();         void AddNewRow(int id, string name)   

ASP.Net的导出Excel的快速方法,DataTable导出Excel(亲测,非原创)

//使用方法 ExcelHelper.dataTableToCsv(dt,@"D:\1212.xls");System.Diagnostics.Process.Start(@"c:\1.xls"); //打开excel文件 public static void dataTableToCsv(DataTable table, string file) { string title = ""; FileStream fs = new FileStre

(转)在JAVA实现DataTable对象(三)——DataTable对象实现

大家都是行家,我就直接上代码了,我这个代码应该还是能看懂的,嘻嘻…. 1: import java.util.ArrayList; 2: import java.util.List; 3:   6:   7: public final class DataTable { 8:   9: private DataRowCollection rows; //用于保存DataRow的集合对象 10: private DataColumnCollection columns; //用于保存DataCol

几个和DataTable相关的函数

一.关于本文 本文中的DataTableHelper类包括了4个操作DataTable的函数,分别是 1)public static DataTable GetTestDataTable() 这是一个测试用的函数,生成一个有内容的DataTable 2)public static string PrintDataTable(DataTable dt) 这个函数向控制台打印一个DataTable中的所有内容 3)public static DataTable GetAnotherDataTable

List转Datatable 新方法

方法1,最简单的转换 DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Columns.Add("name"); dt.Rows.Add(new object[]{ 0,"顶层菜单"}); foreach (var cm in comdList) { DataRow dr = dt.NewRow(); dr["id"] = cm.SYS_COMMANDS_ID;

ExtAspNet从DataTable里导出Excel

protected void btn_ToExcel_Click(object sender, EventArgs e) { Response.ClearContent(); Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); Response.ContentType = "application/excel"; Response.W

DataTable转换成实体

///<summary> ///DataRow转换成实体 ///</summary> ///<paramname="DataRow">DataRow</param> public static T ToModel<T>(DataRow row) where T : new() { if (row == null) { return default(T); } T t = new T(); PropertyInfo[] objP