国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C#將DataTable轉(zhuǎn)化為L(zhǎng)ist<T>

2019-11-17 02:25:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#將DataTable轉(zhuǎn)化為L(zhǎng)ist<T>

C#將DataTable轉(zhuǎn)化為L(zhǎng)ist<T>

在使用三層架構(gòu)開(kāi)發(fā)一個(gè)網(wǎng)站時(shí),希望把DataTable對(duì)象轉(zhuǎn)換為L(zhǎng)ist<T>對(duì)象,于是在網(wǎng)上找資料,總結(jié)一個(gè)比較方便的方法來(lái)實(shí)現(xiàn)——使用反射。

思路:

  1. 初始化一個(gè)List<T>對(duì)象
  2. 獲取到T所有的屬性,初始化一個(gè)T對(duì)象
  3. 遍歷所有屬性,如果DataTable中含有相應(yīng)屬性的值則為T(mén)對(duì)象賦值,如果沒(méi)有對(duì)應(yīng)的列則檢查數(shù)據(jù)模型是否定義有誤(屬性名與列名比較時(shí)不區(qū)分大小寫(xiě))
  4. 將T對(duì)象添加到List<T>對(duì)象中

  總體代碼:

反射獲取到的屬性信息

DataTable中的列信息,對(duì)比上圖,我們會(huì)發(fā)現(xiàn),屬性中首字母都是大寫(xiě),而列名則是采用的Camel命名,首字母是小寫(xiě),但是通過(guò)單步調(diào)試可以發(fā)現(xiàn) dt.Columns.Contanis(tempName) 的返回值為true,由此可以證明,這樣比較時(shí)是不區(qū)分大小寫(xiě)的

獲取到T對(duì)象信息

 1         /// <summary>   2         /// 利用反射將DataTable轉(zhuǎn)換為L(zhǎng)ist<T>對(duì)象 3         /// </summary>   4         /// <param name="dt">DataTable 對(duì)象</param>   5         /// <returns>List<T>集合</returns>   6         public static List<T> DataTableToList<T>(DataTable dt) where T :class,new () 7         {   8             // 定義集合   9             List<T> ts = new List<T>();  10             //定義一個(gè)臨時(shí)變量  11             string tempName = string.Empty;  12             //遍歷DataTable中所有的數(shù)據(jù)行  13             foreach (DataRow dr in dt.Rows)  14             {  15                 T t = new T();  16                 // 獲得此模型的公共屬性  17                 PRopertyInfo[] propertys = t.GetType().GetProperties();  18                 //遍歷該對(duì)象的所有屬性  19                 foreach (PropertyInfo pi in propertys)  20                 {  21                     tempName = pi.Name;//將屬性名稱(chēng)賦值給臨時(shí)變量  22                     //檢查DataTable是否包含此列(列名==對(duì)象的屬性名)    23                     if (dt.Columns.Contains(tempName))  24                     {  25                         //取值  26                         object value = dr[tempName];27                          //如果非空,則賦給對(duì)象的屬性  28                          if (value != DBNull.Value)29                          {30                              pi.SetValue(t,value,null);  31                          }    32                     }  33                 }  34                 //對(duì)象添加到泛型集合中  35                 ts.Add(t);  36             }  37             return ts;  38         }
View Code


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海伦市| 缙云县| 永年县| 胶州市| 筠连县| 平泉县| 台南市| 通河县| 酉阳| 万盛区| 都昌县| 恭城| 隆尧县| 古丈县| 定边县| 澳门| 错那县| 马尔康县| 本溪市| 稷山县| 福贡县| 盐亭县| 静宁县| 镇沅| 福建省| 荆门市| 高阳县| 丹东市| 丹阳市| 万州区| 双柏县| 射洪县| 湖北省| 苍梧县| 栾城县| 汾西县| 惠东县| 松江区| 格尔木市| 霍山县| 新兴县|