为了账号安全,请及时绑定邮箱和手机立即绑定

把List<T>转换为DataTable

标签:
Java

下面这个学习,把List<T>转换为Datatable。

下面先创建一个对象T:

 

class Ay    {        private int _ID;        public int ID        {            get { return _ID; }            set { _ID = value; }        }        private string _Account;        public string Account        {            get { return _Account; }            set { _Account = value; }        }        private string _Email;        public string Email        {            get { return _Email; }            set { _Email = value; }        }        public Ay()        {        }        public Ay(int id,string account,string email)        {            this._ID = id;            this._Account = account;            this._Email = email;        }    }

Source Code

 

此时,你可以写一个C#扩展方法:

 

public static DataTable ToDataTable<T>(this List<T> items)        {            DataTable dataTable = new DataTable();                       PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);            foreach (PropertyInfo prop in Props)            {                                dataTable.Columns.Add(prop.Name);            }            foreach (T obj in items)            {                var values = new object[Props.Length];                for (int i = 0; i < Props.Length; i++)                {                    values[i] = Props[i].GetValue(obj, null);                }                dataTable.Rows.Add(values);            }            return dataTable;        }

Source Code

 

下面,我们在List<T>添加几笔记录,然后使用上面的扩展方法,把List<T> 转换为DataTable.
为了看到结果,再把DataTable打印至控制台上:



class Az    {        public void ConvertListToDataTableTextDemo()        {            List<Ay> ays = new List<Ay>()            {                new Ay() { ID=1,Account="A0001",Email="A0001@email.com" },                new Ay() { ID=2,Account="A0002",Email="A0002@email.com"},                new Ay() {ID=3,Account="A0003",Email="A0003@email.com" }            };          DataTable dt =  ays.ToDataTable();            foreach (DataRow row in dt.Rows)            {                Console.WriteLine();                for (int x = 0; x < dt.Columns.Count; x++)                {                    Console.Write(row[x].ToString() + " ");                }            }            Console.WriteLine("\n\r");        }    }

Source Code

 

控制台输出的结果:

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消