精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何對DataSet進行強類型化

數據庫
在項目中經常需要用到DataSet來存放數據,但是一直覺得從數據集中獲取數據使用是一件很難受的事情,特別是當需要用到強類型數據的時候,就想到了動手寫個方法來實現。

在項目中經常需要用到DataSet來存放數據,但是一直覺得從數據集中獲取數據使用是一件很難受的事情,特別是當需要用到強類型數據的時候,就想到了動手寫個方法來實現。

  1. /// <summary>    
  2.     /// 將數據集強類型化    
  3.     /// </summary>    
  4.     /// <typeparam name="T">轉換類型</typeparam>    
  5.     /// <param name="dataSet">數據源</param>    
  6.     /// <param name="tableIndex">需要轉換表的索引</param>    
  7.     /// <returns>泛型集合</returns>    
  8.     public static IList<T> ToList<T>(this DataSet dataSet, int tableIndex)    
  9.      {    
  10.          //確認參數有效    
  11.          if (dataSet == null || dataSet.Tables.Count <= 0 || tableIndex < 0)    
  12.              return null;    
  13.          DataTable dt = dataSet.Tables[tableIndex];    
  14.          IList<T> list = new List<T>();    
  15.          for (int i = 0; i < dt.Rows.Count; i++)    
  16.          {    
  17.               //創建泛型對象    
  18.               T _t = Activator.CreateInstance<T>();    
  19.               //獲取對象所有屬性    
  20.               PropertyInfo[] propertyInfo = _t.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);    
  21.               for (int j = 0; j < dt.Columns.Count; j++)    
  22.               {    
  23.                   foreach (PropertyInfo info in propertyInfo)    
  24.                   {    
  25.                       //屬性名稱和列名相同時賦值    
  26.                       if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))    
  27.                       {    
  28.                           if (dt.Rows[i][j] != DBNull.Value)    
  29.                           {    
  30.                               info.SetValue(_t, dt.Rows[i][j].ConvertDataTo(info.PropertyType), null);    
  31.                           }    
  32.                           else   
  33.                           {    
  34.                               info.SetValue(_t, null, null);    
  35.                           }    
  36.                           break;    
  37.                       }    
  38.                   }    
  39.               }    
  40.               list.Add(_t);    
  41.          }    
  42.          return list;    
  43.      }  

在需要給屬性賦值的時候,為了避免數據集中的字段名與用戶定義的Model屬性名一致而類型不一致的問題,我又寫了個方法,用來把對象進行類型轉換:

  1. public static object ConvertDataTo(this object obj,Type type)     
  2. {    
  3.     if (obj.GetType().Equals(type))    
  4.     {    
  5.         return obj;    
  6.     }    
  7.     else   
  8.     {    
  9.         try   
  10.         {    
  11.             if (type == typeof(string)) { return obj.ToString(); }    
  12.             MethodInfo parseMethod = null;    
  13.             foreach (MethodInfo mi in type.GetMethods(BindingFlags.Static | BindingFlags.Public))    
  14.             {    
  15.                 if (mi.Name == "Parse" && mi.GetParameters().Length == 1)    
  16.                 { parseMethod = mi; break; }    
  17.             }    
  18.             if (parseMethod == null)    
  19.             {    
  20.                 return null;    
  21.             }    
  22.             return parseMethod.Invoke(null, new object[] { obj });     
  23.         }    
  24.         catch    
  25.         {    
  26.             return null;    
  27.             throw;    
  28.         }    
  29.     }    
  30. }  

其實這么寫是比較偷懶的寫法,用了這么多反射, 于是想到做一下性能測試,我建的MVC項目,看一下測試結果:

  1. public ActionResult Index()    
  2.      {    
  3.          DataSet ds = new DataSet();    
  4.          DataTable dt = new DataTable();    
  5.          dt.Columns.Add("resourcename1", typeof(string));    
  6.          dt.Columns.Add("resourcename2", typeof(string));    
  7.          dt.Columns.Add("resourcename3", typeof(string));    
  8.          dt.Columns.Add("resourcename4", typeof(string));    
  9.          dt.Columns.Add("resourcename5", typeof(string));    
  10.          dt.Columns.Add("fitsex1", typeof(int));    
  11.          dt.Columns.Add("fitsex2", typeof(int));    
  12.          dt.Columns.Add("fitsex3", typeof(int));    
  13.          dt.Columns.Add("fitsex4", typeof(int));    
  14.          dt.Columns.Add("fitsex5", typeof(int));    
  15.          for (int i = 0; i < 5000; i++)    
  16.          {    
  17.               DataRow row = dt.NewRow();    
  18.               row[0] = "王虎" + i.ToString();    
  19.               row[1] = "王虎" + i.ToString();    
  20.               row[2] = "王虎" + i.ToString();    
  21.               row[3] = "王虎" + i.ToString();    
  22.               row[4] = "王虎" + i.ToString();    
  23.               row[5] = i;    
  24.               row[6] = i;    
  25.               row[7] = i;    
  26.               row[8] = i;    
  27.               row[9] = i;    
  28.               dt.Rows.Add(row);    
  29.           }    
  30.           ds.Tables.Add(dt);    
  31.           var watch = new Stopwatch();    
  32.           watch.Start();    
  33.           var ModelList = ds.ToList<Model_Resource>(0);    
  34.           watch.Stop();    
  35.           ViewData["Message"] = string.Format("ModelList.count={0},Elapsed Milliseconds:{1}", ModelList.Count.ToString(),watch.ElapsedMilliseconds.ToString());    
  36.           return View();    
  37.      }  

我使用的類定義如下:

  1. /// <summary>    
  2.   /// 實體類Resource 。(屬性說明自動提取數據庫字段的描述信息)    
  3.   /// </summary>    
  4.   [Serializable]    
  5.   public class Model_Resource    
  6.   {    
  7.       public Model_Resource()    
  8.       { }    
  9.       #region Model    
  10.       /// <summary>    
  11.       /// 資源標準名稱    
  12.       /// </summary>    
  13.       public string ResourceName1    
  14.       {    
  15.           get;    
  16.           set;    
  17.       }    
  18.       /// <summary>    
  19.       /// 資源標準名稱    
  20.       /// </summary>    
  21.       public string ResourceName2    
  22.       {    
  23.           get;    
  24.           set;    
  25.       }    
  26.       /// <summary>    
  27.       /// 資源標準名稱    
  28.       /// </summary>    
  29.       public string ResourceName3    
  30.       {    
  31.           get;    
  32.           set;    
  33.       }    
  34.       /// <summary>    
  35.       /// 資源標準名稱    
  36.       /// </summary>    
  37.       public string ResourceName4    
  38.       {    
  39.           get;    
  40.           set;    
  41.       }    
  42.       /// <summary>    
  43.       /// 資源標準名稱    
  44.       /// </summary>    
  45.       public string ResourceName5    
  46.       {    
  47.           get;    
  48.           set;    
  49.       }    
  50.       /// <summary>    
  51.       /// 適合的性別 1 男 2 女 3 均可    
  52.       /// </summary>    
  53.       public string FitSex1    
  54.       {    
  55.           get;    
  56.           set;    
  57.       }    
  58.       /// <summary>    
  59.       /// 適合的性別 1 男 2 女 3 均可    
  60.       /// </summary>    
  61.       public string FitSex2    
  62.       {    
  63.           get;    
  64.           set;    
  65.       }    
  66.       /// <summary>    
  67.       /// 適合的性別 1 男 2 女 3 均可    
  68.       /// </summary>    
  69.       public string FitSex3    
  70.       {    
  71.           get;    
  72.           set;    
  73.       }    
  74.       /// <summary>    
  75.       /// 適合的性別 1 男 2 女 3 均可    
  76.       /// </summary>    
  77.       public string FitSex4    
  78.       {    
  79.           get;    
  80.           set;    
  81.       }    
  82.       /// <summary>    
  83.       /// 適合的性別 1 男 2 女 3 均可    
  84.       /// </summary>    
  85.       public string FitSex5    
  86.       {    
  87.           get;    
  88.           set;    
  89.       }    
  90.       #endregion Model    
  91.   }  

看一下測試結果:

注:

性能上還可以通過緩存等機制優化一下,不過這方面已經有一些大牛做過了,以后有時間可以加進去。

原文鏈接:http://www.cnblogs.com/wbpmrck/archive/2011/04/12/2013730.html

【編輯推薦】

  1. 一步一步設計你的數據庫1
  2. 為自己做一個簡單記賬簿
  3. 曬曬我的通用數據訪問層
  4. 幾步走,教你創建簡單訪問數據庫方法
  5. 微軟研究人員:NoSQL需要標準化
責任編輯:艾婧 來源: 博客園
相關推薦

2009-06-11 17:54:00

Visual StudDataSet

2011-09-29 09:43:44

基礎架構虛擬化IT

2009-02-13 10:33:00

交換機初始化配置

2011-05-16 15:36:00

軟件測試

2009-12-30 10:49:32

ADO.NET Ent

2017-02-22 13:48:49

Tableau可視化

2011-09-07 10:02:41

Exchange 20虛擬化

2011-03-02 10:33:33

終端虛擬化

2009-12-29 14:09:17

ADO.NET通用接口

2009-12-29 16:50:13

ADO DataSet

2023-01-30 08:30:09

Tomcat性能優化

2011-01-20 10:33:30

Postfix

2020-05-20 12:30:44

容器Linux系統

2009-12-25 14:30:47

ADO記錄

2013-07-08 17:41:53

Linux 系統U盤格式化

2010-02-02 14:11:14

Python 進行編程

2010-05-25 10:11:06

ubuntu Grub

2020-12-22 21:57:39

人臉識別AI人工智能

2014-05-14 00:50:18

JoyentNode

2013-05-24 09:25:27

點贊
收藏

51CTO技術棧公眾號

国产精品日韩无码| 在线播放av网址| 日本成人网址| 国产激情一区二区三区| 久久人人爽人人爽人人片av高请| 久久久久国产精品区片区无码| 亚洲成a人片| 亚洲欧洲精品天堂一级| 国产亚洲一区二区三区在线播放| 好看的av在线| 天天av综合| 亚洲成人网在线| 日韩有码免费视频| 在线黄色网页| 久久色在线观看| 国产一区欧美二区三区| 久久夜靖品2区| 久久在线电影| 亚洲老板91色精品久久| 日本美女久久久| 亚洲精品在线影院| 一区在线观看视频| 国产在线精品一区二区中文| 伊人22222| 亚洲伊人网站| 欧美成人国产va精品日本一级| 香蕉视频黄色在线观看| 精品久久亚洲| 欧美性极品少妇| av在线播放亚洲| 国产黄网站在线观看| 久久久久久一级片| 国产精品二区在线| 97超碰人人模人人人爽人人爱| 亚洲尤物在线| 久久免费视频在线观看| 婷婷在线精品视频| 四虎成人av| 亚洲欧洲xxxx| 免费的av网站| 给我免费播放日韩视频| 日韩亚洲欧美在线观看| 日韩a一级欧美一级| 国产精品久久乐| 91国产免费看| 日本一本二本在线观看| 第一福利在线视频| 亚洲国产成人tv| 精品国产一区二区三区无码| 中文字幕伦理免费在线视频 | 欧美精品亚洲| 亚洲av毛片成人精品| 成人在线一区二区三区| 99精品在线直播| www.黄色小说.com| 国产一区二区在线观看免费| 国产综合在线观看视频| 国产精品欧美激情在线| 狠狠色丁香九九婷婷综合五月| 91精品久久久久久久久中文字幕| 中文字幕乱码人妻无码久久 | 丰满少妇中文字幕| 精品久久国产一区| 精品久久久久香蕉网| 亚洲色图欧美日韩| 日韩三级视频| 亚洲欧洲午夜一线一品| 蜜臀久久99精品久久久久久| 欧美少妇性xxxx| 色妞一区二区三区| 精品自拍偷拍视频| 影音先锋日韩资源| 欧美一区第一页| 色婷婷久久综合中文久久蜜桃av| 男男视频亚洲欧美| 成人黄色生活片| 国产成人毛毛毛片| 成人99免费视频| 欧美精品久久久| av在线中文| 亚洲精品国产一区二区三区四区在线| 在线观看成人av| 免费影视亚洲| 在线国产亚洲欧美| 性欧美在线视频| 另类尿喷潮videofree| 亚洲女人天堂色在线7777| 九九九视频在线观看| 91成人精品| 2019中文字幕全在线观看| 中文在线观看av| 成人午夜激情影院| 日韩中文一区| 韩国日本一区| 在线免费观看日本欧美| 欧美日韩一区二区区| 色天天色综合| 久久视频在线看| 国产又大又黄又粗| 国内不卡的二区三区中文字幕| 国产精品一区二区三区免费| 成人动漫在线播放| 五月婷婷另类国产| 九一精品久久久| 亚洲欧美日本伦理| 久久99视频精品| 五月天中文字幕| 99视频一区二区三区| 在线观看一区二区三区三州| 国产免费拔擦拔擦8x在线播放 | 国产精品99久久久久久久久久久久 | 国产噜噜噜噜噜久久久久久久久 | 精品久久久久久久久久久久久久久久 | 国内精品伊人久久| 国产在成人精品线拍偷自揄拍| 99精品视频在线观看| 中文字幕精品在线播放| 色香欲www7777综合网| 精品国产亚洲在线| 三级黄色在线观看| 日韩精品欧美成人高清一区二区| 成人国产一区二区| 黄色在线视频网站| 欧美亚洲高清一区| 欧美丰满少妇人妻精品| 国产在线不卡| 91在线高清免费观看| eeuss影院在线观看| 欧美性jizz18性欧美| 亚洲成人精品在线播放| 99久久视频| 国产精品久久久久久久久久小说| 欧美zozo| 欧美性xxxx极品hd满灌| 香港三日本8a三级少妇三级99| 国产精品久久久久久久久妇女| 国产精品久久91| 欧美视频免费一区二区三区| 精品福利视频导航| 色哟哟视频在线| 黄色免费成人| 国产精品久久久久久久天堂第1集| 黄色网页在线看| 精品视频资源站| 精品无码人妻一区二区免费蜜桃| 亚洲在线视频| 农村寡妇一区二区三区| 忘忧草在线日韩www影院| 亚洲国产高潮在线观看| 久久久久性色av无码一区二区| 国产激情偷乱视频一区二区三区 | 国产毛片久久| 欧美一区亚洲二区| 香蕉久久免费电影| 亚洲午夜精品视频| 精品国产青草久久久久96| 中文字幕国产一区二区| 日本一二区免费| 天天射综合网视频| 91香蕉电影院| 羞羞的视频在线看| 亚洲成人激情在线观看| 日本天堂网在线观看| 91论坛在线播放| 日本在线视频www| 成人情趣视频| 亚洲专区国产精品| 182在线视频观看| 日韩经典中文字幕| 69视频免费看| 亚洲色图视频网站| 中文字幕99页| 国产女优一区| 伊人天天久久大香线蕉av色| 日韩欧美另类中文字幕| 久久久视频在线| 欧美女同网站| 在线观看91av| 亚洲日本韩国在线| 国产精品丝袜在线| 国产免费无码一区二区| 午夜一区二区三区不卡视频| 日韩一区国产在线观看| 91成人在线精品视频| 日本久久久久久久久久久| 3p视频在线观看| 精品区一区二区| 亚洲精品男人的天堂| 国产精品福利一区| 99久久久无码国产精品性波多 | 国产永久免费高清在线观看视频| 欧美日韩国产在线观看| 精品在线视频免费观看| 国产喷白浆一区二区三区| 中文字幕亚洲日本| 日韩精品1区2区3区| 特级西西444| 久久不见久久见国语| 91入口在线观看| 日韩欧美看国产| 九九九热精品免费视频观看网站| 精品电影在线| 欧美sm美女调教| 一区二区小视频| 都市激情亚洲色图| 欧美成人精品激情在线视频| 国产欧美日韩一区二区三区在线观看| 在线播放免费视频| 日韩精品成人一区二区三区| 成人午夜免费剧场| 亚洲最好看的视频| 99免费在线观看视频| 成人黄色毛片| 日本精品免费观看| 操喷在线视频| 久久国产精品久久久久久| 福利视频在线看| 亚洲精品久久久久久久久久久久 | 成人在线视频免费| 欧美主播福利视频| 51精品视频| 欧美久久精品一级黑人c片| 91在线视频| 亚洲视频一区二区| 午夜视频福利在线| 欧美成人aa大片| 国产a级免费视频| 7777精品伊人久久久大香线蕉的 | 日韩精品一区二区亚洲av性色| 国产无一区二区| 无码人妻aⅴ一区二区三区| 国产ts人妖一区二区| 一级日本黄色片| 国产老女人精品毛片久久| 色噜噜狠狠一区二区| 日韩精品亚洲专区| 欧美激情国产精品日韩| 影音先锋日韩资源| 黄色一级视频在线播放| 亚洲无线一线二线三线区别av| 国产人妻互换一区二区| 亚洲a在线视频| 青草全福视在线| 综合精品一区| 精品一区二区三区无码视频| 欧美视频网站| 亚洲 欧美 日韩 国产综合 在线| 激情综合在线| 久激情内射婷内射蜜桃| 亚洲美女毛片| 日韩在线一级片| 天堂在线一区二区| 天天操,天天操| 久国产精品韩国三级视频| 免费成年人高清视频| 久久99久久99| 中文字幕无码毛片免费看| 国产高清不卡一区| 国产国语老龄妇女a片| 成人免费av资源| 久久丫精品国产亚洲av不卡| 久久久国产精品午夜一区ai换脸| 人与嘼交av免费| 1区2区3区国产精品| 私库av在线播放| 亚洲第一成人在线| 久久国产视频精品| 欧美日韩精品综合在线| av资源免费看| 亚洲精品第一页| 国产天堂在线| 久久夜色精品国产| 超免费在线视频| 国产成人精品免费视频| 高清一区二区| 国产中文一区二区| 欧美日韩一二三四| 粉嫩av一区二区三区天美传媒| 精品动漫av| 五月婷婷深爱五月| 国产精品亚洲第一| 国产精品边吃奶边做爽| 欧美国产97人人爽人人喊| 人妻少妇精品一区二区三区| 精品美女国产在线| 97精品人妻一区二区三区| 亚洲成人黄色在线| 天堂а√在线官网| 97婷婷涩涩精品一区| 91九色综合| 高清视频在线观看一区| 免费视频国产一区| 日韩欧美一级在线| 肉肉av福利一精品导航| 天堂网在线免费观看| 成人av网站大全| 貂蝉被到爽流白浆在线观看| 亚洲成在人线在线播放| 波多野结衣影片| 欧美电影免费观看完整版| 成人在线免费电影| 久久免费国产视频| 伊人久久综合网另类网站| 国语精品中文字幕| 亚洲天天综合| 狠狠热免费视频| 成人激情动漫在线观看| 色偷偷www8888| 91九色最新地址| 日本xxxxwww| 欧美成年人网站| 久久日本片精品aaaaa国产| 国产综合第一页| 中文字幕午夜精品一区二区三区| 精品久久久久久久无码| 97精品久久久久中文字幕| 免费在线看黄网址| 欧美美女一区二区| 春暖花开成人亚洲区| 26uuu另类亚洲欧美日本老年| 精品中文视频| 在线视频不卡国产| 日韩福利电影在线| 国产精品揄拍100视频| 亚洲成a天堂v人片| www香蕉视频| 久久最新资源网| 亚洲精品一区av| 亚洲欧洲日夜超级视频| 日韩av在线免费观看不卡| 一级特级黄色片| 亚洲午夜久久久久久久久久久 | 麻豆久久久久| 日本亚洲自拍| 日日摸夜夜添夜夜添国产精品| 一级特级黄色片| 欧美日韩国产影院| 亚州男人的天堂| 欧美中文字幕视频在线观看| 欧美日日夜夜| 亚洲精品无码久久久久久| 99re亚洲国产精品| 欧美亚洲精品天堂| 日韩电影在线观看中文字幕| 成人免费网站观看| 精品国产中文字幕| 亚洲一区国产| 97人妻精品一区二区免费| 色猫猫国产区一区二在线视频| 精品视频一二区| 国产精品视频导航| 久久中文字幕av| 亚洲色图欧美自拍| 一区二区欧美视频| 性生交生活影碟片| 久久久免费观看视频| 亚洲精品无吗| 青青青国产在线视频| 国产精品第四页| 99在线观看精品视频| 久久久久久久久爱| 亚洲老女人视频免费| 久久精品午夜福利| 亚洲欧洲色图综合| www.日本在线观看| 91精品国产高清久久久久久久久| 久久av资源| 久久久久久综合网| 亚洲国产综合在线| 日本国产在线| 成人黄色在线免费| 一区在线免费| 国产小视频自拍| 3d成人动漫网站| 高清毛片在线观看| 亚洲二区三区四区| 国产a视频精品免费观看| 欧美一区二区三区网站| 精品国产一区二区三区久久| 在线精品国产亚洲| 99草草国产熟女视频在线| 亚洲靠逼com| 黄色毛片在线看| 97人人模人人爽人人喊38tv| 国产亚洲在线观看| 免费在线观看a级片| 亚洲国产欧美自拍| 精品久久在线| 免费无遮挡无码永久视频| 中文在线免费一区三区高中清不卡| 成人福利小视频| 国产精品国产亚洲伊人久久| 国产精品地址| 国产视频不卡在线| 亚洲第一中文字幕| 99久久这里有精品| 妞干网在线免费视频| 一区二区三区高清不卡| 国产乱视频在线观看| 国产伦精品一区二区三|