亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

把DataTable轉換為List<T>

標簽:
Java


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

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

 

 public static List<T> ToList<T>(this DataTable dt)        {            var dataColumn = dt.Columns.Cast<DataColumn>().Select(c => c.ColumnName).ToList();            var properties = typeof(T).GetProperties();            string columnName = string.Empty;            return dt.AsEnumerable().Select(row =>            {                var t = Activator.CreateInstance<T>();                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", "[email protected]");            dt.Rows.Add(2, "A0002", "[email protected]");            dt.Rows.Add(3, "A0003", "[email protected]");            List<Ay> ays = dt.ToList<Ay>();            ays.ForEach(delegate (Ay ay)            {                Console.WriteLine(ay.ToString());            });                        Console.WriteLine("\n\r");        }    }

Source Code

 

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

 

在控制台测试一下代码:

 

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消