亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

將DataTable轉換成List<T>實現思路及示例代碼

2020-01-24 03:05:33
字體:
來源:轉載
供稿:網友

前幾天在工作中,遇到一個問題:需要將查詢出來的DataTable數據源,轉換成List<T>的泛型集合(已知T類型)。第一反應,我想肯定要用到“泛型”(這不是廢話嗎?都說了要轉換成List<T>泛型集合了),而且還要用到“反射”相關的。呵呵。很快,我就做出了一個小實例,測試通過。下面我將代碼貼出來,分享給大家。代碼都有詳細的注釋,讀者朋友可以很清晰的看懂我的思路。

首先,這是我寫的一個通用轉換類,完成此類操作。也是實現這個功能最核心的部分:

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
using System.Reflection;
namespace DatableToList
{
    class ConvertHelper<T> where T : new()
    {
        /// <summary>
        /// 利用反射和泛型
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static List<T> ConvertToList(DataTable dt)
        {

            // 定義集合
            List<T> ts = new List<T>();

            // 獲得此模型的類型
            Type type = typeof(T);
            //定義一個臨時變量
            string tempName = string.Empty;
            //遍歷DataTable中所有的數據行
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                // 獲得此模型的公共屬性
                PropertyInfo[] propertys = t.GetType().GetProperties();
                //遍歷該對象的所有屬性
                foreach (PropertyInfo pi in propertys)
                {
                    tempName = pi.Name;//將屬性名稱賦值給臨時變量
                    //檢查DataTable是否包含此列(列名==對象的屬性名) 
                    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;

        }
    }
}


下面,是Main方法中調用的實例:
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
using System.Reflection;


namespace DatableToList
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = CreateDt();//獲得一個DataTable
          //根據對象類型和DataTable,獲取泛型集合
          List<Person>  list = ConvertHelper<Person>.ConvertToList(dt);
          //遍歷該泛型集合,打印輸出。
        foreach (var item in list)
        {
            Console.WriteLine(item.ToString());
        }

          Console.ReadKey();
        }
        /// <summary>
        /// 創建一個DataTable,并添加數據,提供測試。
        /// </summary>
        /// <returns></returns>
        public static DataTable CreateDt()
        {

            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("id", typeof(System.Int32)));
            dt.Columns.Add(new DataColumn("name", typeof(System.String)));
            dt.Columns.Add(new DataColumn("address", typeof(System.String)));

            dt.Rows.Add(1,"Dylan","SZ");
            dt.Rows.Add(2, "Jay", "TW");
            dt.Rows.Add(3, "CQ", "HK");
            return dt;
        }

    }  

}


最下面,就是自定義的一個簡單類的代碼了:
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatableToList
{
    class Person
    {
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string address;

        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        public override string ToString()
        {
            return "Person: " + id + " ," + name+","+address;
        }
    }
}


上面的例子測試通過,水平有限,不足之處,敬請諒解。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区在线播放| 国产亚洲精品高潮| 美日韩精品免费观看视频| 国产在线98福利播放视频| 亚洲国产日韩欧美在线99| 日韩成人xxxx| 日韩二区三区在线| 92版电视剧仙鹤神针在线观看| 亚洲女性裸体视频| 亚洲精品一区二三区不卡| 欧美xxxx做受欧美.88| 欧美裸体视频网站| 日韩av一区在线观看| 国产精品自产拍高潮在线观看| 欧美视频免费在线观看| 欧美理论电影网| 亚洲国产精品美女| 久久精品国产综合| 久久精品电影一区二区| 日韩中文在线中文网三级| 美女性感视频久久久| 久久视频国产精品免费视频在线| 欧美日韩国产限制| 亚洲人成毛片在线播放| 午夜剧场成人观在线视频免费观看| 日韩av毛片网| 最新91在线视频| 岛国av一区二区在线在线观看| 91成人免费观看网站| 亚洲色图校园春色| 国产精品18久久久久久首页狼| 日韩在线观看网址| 日韩在线一区二区三区免费视频| 91禁外国网站| 这里只有视频精品| 日韩在线精品一区| 欧美精品在线播放| 国产一区二区av| 亚洲电影成人av99爱色| 欧美激情精品久久久久久大尺度| 国产精品自产拍在线观| 国产精品成人观看视频国产奇米| 在线观看久久av| 91久久嫩草影院一区二区| 久久精品视频在线观看| 97人洗澡人人免费公开视频碰碰碰| 久久青草精品视频免费观看| 日韩精品视频免费专区在线播放| 中文字幕在线观看日韩| 亚洲欧洲日产国产网站| 欧美日韩免费区域视频在线观看| 国产精品日韩电影| 国产精品视频久久久久| 亚洲天堂av网| 欧美精品制服第一页| 亚洲性夜色噜噜噜7777| 久久久av免费| 中文字幕亚洲欧美一区二区三区| 久久五月情影视| 欧美大胆在线视频| 国产欧美精品xxxx另类| 国产精品成人久久久久| 欧美电影免费看| 日韩av片免费在线观看| 欧美第一黄网免费网站| 欧美交受高潮1| 精品少妇一区二区30p| 欧美激情一级欧美精品| 久久深夜福利免费观看| 亚洲人成网7777777国产| 欧美性极品少妇精品网站| 午夜精品在线视频| 国产日韩在线精品av| 一区二区三区四区视频| 91亚洲国产成人久久精品网站| 国产欧美一区二区三区在线看| 夜夜嗨av色一区二区不卡| 亚洲欧洲免费视频| 午夜剧场成人观在线视频免费观看| 国产91ⅴ在线精品免费观看| 久久躁狠狠躁夜夜爽| 中文字幕v亚洲ⅴv天堂| 国产成人一区二区在线| 性色av一区二区三区红粉影视| 国产精品激情av在线播放| 亚洲护士老师的毛茸茸最新章节| 日韩毛片中文字幕| 国产女人精品视频| 色狠狠av一区二区三区香蕉蜜桃| 国产成人+综合亚洲+天堂| 国产视频欧美视频| 亚洲国产又黄又爽女人高潮的| 欧美裸体视频网站| 亚洲成人国产精品| 久久久精品国产亚洲| 亚洲小视频在线观看| 国产精品视频导航| 欧美精品videofree1080p| 日韩欧美在线第一页| 韩国v欧美v日本v亚洲| 日韩美女激情视频| 国产精品久久久久av免费| 国产一区二区三区直播精品电影| 亚洲精品视频中文字幕| 成人av在线亚洲| 国产精品视频xxx| 欧美日韩一区二区精品| 国外成人性视频| 国产精品美乳在线观看| 亚洲2020天天堂在线观看| 亚洲国产精品999| 国产高清在线不卡| 欧美激情精品久久久| 久久久在线视频| 91在线|亚洲| 精品亚洲精品福利线在观看| 色婷婷综合成人av| 国产日本欧美视频| 日韩av黄色在线观看| 欧美日韩福利视频| 欧美日韩国产影院| 国产精品电影久久久久电影网| 欧美孕妇与黑人孕交| 欧美疯狂性受xxxxx另类| 国产成人精品av| 一区二区三区 在线观看视| 爽爽爽爽爽爽爽成人免费观看| 精品福利在线观看| 91影院在线免费观看视频| 国产欧美在线视频| 久久精品影视伊人网| 中文字幕日韩在线视频| 揄拍成人国产精品视频| 韩国v欧美v日本v亚洲| 日韩欧中文字幕| 亚洲xxxx在线| 国产精品普通话| 精品久久久久久国产91| 久久频这里精品99香蕉| 一区二区三区四区精品| 亚洲成色777777女色窝| 成人久久久久久久| 久久91精品国产91久久跳| 成人在线精品视频| 国产精品一区二区三区毛片淫片| 麻豆一区二区在线观看| 久久久女人电视剧免费播放下载| 亚洲精品在线观看www| 亚洲影院高清在线| 九九精品在线播放| 亚洲一区www| 欧美www在线| 日韩久久精品电影| 欧美激情一级二级| 欧美激情视频一区二区| 亚洲天堂色网站| 韩国国内大量揄拍精品视频| 性夜试看影院91社区| 中文字幕视频在线免费欧美日韩综合在线看| 欧美在线xxx| 国产一区在线播放| 不卡av电影院| 精品动漫一区二区三区| 97精品国产aⅴ7777|