精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

五月天亚洲婷婷| 国产激情一区二区三区桃花岛亚洲| 亚洲精品福利在线观看| 粉嫩虎白女毛片人体| 3p视频在线观看| 北岛玲一区二区三区四区| 欧美最顶级的aⅴ艳星| 欧美一级特黄高清视频| 国产精品99久久免费观看| 欧美亚洲丝袜传媒另类| 妞干网在线播放| 国产在线色视频| 国产aⅴ综合色| 国产精品久久久久久av福利| 久久免费视频6| 欧洲三级视频| 亚洲国产精品福利| 潘金莲激情呻吟欲求不满视频| 变态调教一区二区三区| 国产精品网友自拍| 老司机精品福利在线观看| 91九色蝌蚪91por成人| 午夜亚洲伦理| 欧美激情在线一区| 性少妇xx生活| 自拍偷拍欧美一区| 欧美精品一区二区久久婷婷| 午夜大片在线观看| 韩国成人在线| 欧美午夜xxx| 久久国产精品免费观看| аⅴ资源新版在线天堂| 91在线观看免费视频| 亚洲影院在线看| 亚洲天堂网在线视频| 亚洲欧美日韩国产综合精品二区| 欧美富婆性猛交| 极品色av影院| 日韩精品中文字幕第1页| 亚洲免费影视第一页| 国产麻豆剧传媒精品国产av| 国产一精品一av一免费爽爽| 欧美色综合天天久久综合精品| 成人在线看视频| heyzo一区| 亚洲一二三四在线| 日产精品久久久久久久蜜臀| 免费a在线看| 国产精品蜜臀av| 少妇特黄a一区二区三区| 深夜福利视频在线免费观看| 国产乱码精品一区二区三区忘忧草 | 美腿丝袜一区二区三区| 欧美激情按摩在线| 青青青视频在线免费观看| 国产精品嫩模av在线| 精品一区二区三区四区在线| 在线免费观看污视频| av综合网址| 精品国产青草久久久久福利| 欧美午夜精品一区二区| 亚洲精品a区| 亚洲大胆人体在线| 日本japanese极品少妇| 亚洲大片精品免费| 国产性猛交xxxx免费看久久| 国产精久久一区二区三区| 精品国产美女| 日韩视频免费中文字幕| av资源在线免费观看| 91精品国产自产拍在线观看蜜| 久久av资源网站| 69av.com| 国产一区二区你懂的| 欧美一区三区三区高中清蜜桃| 丁香社区五月天| 日韩avvvv在线播放| 国产精品一区二区三区成人| 国产视频www| 99国产精品一区| 欧美精品欧美精品| 色网站在线看| 一区二区三区产品免费精品久久75| 免费看黄色a级片| 国产在线美女| 欧美色视频一区| 成人高清在线观看视频| 成人性生交大片免费看中文视频 | 美国黄色一级视频| 特黄特色欧美大片| 丝袜亚洲另类欧美重口| 久久精品99国产精| 日韩高清一区二区| av激情久久| 福利成人在线观看| 亚洲激情在线播放| 浮妇高潮喷白浆视频| 成人做爰免费视频免费看| 91精品国产综合久久精品麻豆| 国产a级片视频| 精品国产91久久久久久浪潮蜜月| 久久伊人色综合| 亚洲av无码精品一区二区| 狠狠色丁香婷综合久久| 久久av二区| 黄色免费在线网站| 欧美性生活大片免费观看网址| 亚洲一区二区福利视频| 日韩a级大片| 久久精品视频va| 亚洲黄色小说图片| 国产老女人精品毛片久久| 欧美一区激情视频在线观看| 污污视频在线| 精品视频免费在线| 在线免费观看日韩av| 欧美1区3d| 国产精品免费视频xxxx| 天天操天天爱天天干| 亚洲欧美另类久久久精品| 国产超碰在线播放| 九色丨蝌蚪丨成人| 欧美国产亚洲视频| 91美女精品网站| 国产日韩欧美一区二区三区综合| 福利视频免费在线观看| 成年永久一区二区三区免费视频 | www.自拍偷拍| 亚洲高清资源| 91久久大香伊蕉在人线| 免费**毛片在线| 欧美性极品少妇精品网站| 免费啪视频在线观看| 国产精品久久久久久| 国产不卡av在线免费观看| 色欲av永久无码精品无码蜜桃| 亚洲乱码国产乱码精品精98午夜| 亚洲欧美国产中文| 成人vr资源| 国产精品伦子伦免费视频| 深夜福利在线看| 欧美日韩美女视频| avtt香蕉久久| 亚洲深爱激情| 久久精品日韩精品| 国产福利片在线观看| 亚洲成年人在线播放| 玖玖爱免费视频| 国产精品亚洲第一| 久久这里只有精品18| 精品国产一区二| 欧美精品在线观看| 亚洲春色一区二区三区| 亚洲国产成人av| 性久久久久久久久久久| 亚洲在线日韩| 日韩av一区二区三区在线| 亚洲www免费| 曰本色欧美视频在线| 中文字幕欧美人妻精品| 国产精品国产成人国产三级| gai在线观看免费高清| 97精品国产一区二区三区| 成人淫片在线看| 99久久精品免费观看国产| 日韩欧美高清在线| 天天操天天射天天爽| av亚洲精华国产精华| 2022亚洲天堂| 青青草原综合久久大伊人精品| 国产久一一精品| av文字幕在线观看| 亚洲精品成人久久| 真实新婚偷拍xxxxx| 日韩一区在线看| 波多野结衣办公室双飞| 性欧美videos另类喷潮| 翔田千里亚洲一二三区| 久久国产精品美女| 亚洲18私人小影院| www亚洲人| 日韩精品一区国产麻豆| 午夜婷婷在线观看| 亚洲天堂中文字幕| 欧产日产国产精品98| 日本不卡视频一二三区| www成人免费| 国产成人黄色| 成人av蜜桃| 欧美精品资源| 九九九久久久久久| 你懂得网站在线| 欧美一区二区观看视频| 亚洲第一精品在线观看| 中文字幕中文字幕在线一区| 大尺度做爰床戏呻吟舒畅| 日韩国产一区二| 日韩在线视频在线| 国产精品入口久久| 91沈先生播放一区二区| 国产一区二区主播在线| 久久久久国产精品免费网站| 国产高清av在线| 亚洲二区在线播放视频| 在线黄色av网站| 色诱亚洲精品久久久久久| 中文字幕人妻一区二| 久久久久亚洲蜜桃| 黄色国产在线视频| 老司机精品视频导航| 日本一区二区黄色| 午夜电影亚洲| 亚洲精品视频一二三| 麻豆成人入口| 97欧洲一区二区精品免费| 国产私拍福利精品视频二区| 久久青草福利网站| 香蕉久久aⅴ一区二区三区| 国产亚洲一区二区在线| 少妇高潮一区二区三区99小说| 欧美精品在线一区二区三区| 精品无码一区二区三区的天堂| 亚洲国产精品天堂| 老妇女50岁三级| 国产精品网曝门| 一级片视频免费看| 久久久综合九色合综国产精品| 岛国av免费观看| 国产在线看一区| 国产视频1区2区3区| 日韩中文字幕1| 久久久999视频| 99精品国产一区二区青青牛奶| 成人av在线播放观看| 最新国产精品| 中国老女人av| 一区二区三区国产精华| 国产又爽又黄ai换脸| 久久久久久影院| 免费观看中文字幕| 91tv官网精品成人亚洲| 一区二区三区在线观看www| 欧美综合另类| 亚洲视频在线二区| 久久精品99久久无色码中文字幕| 日韩在线第一区| 欧美日韩国产免费观看视频| 精品网站在线看| 亚洲+变态+欧美+另类+精品| 韩国一区二区三区美女美女秀| 一区二区三区视频免费视频观看网站 | 亚洲天堂偷拍| 97超碰国产精品| 亚洲国产婷婷| 丰满爆乳一区二区三区| 国产偷自视频区视频一区二区| 久久国产午夜精品理论片最新版本| 亚洲成人一区| 日韩五码在线观看| 性一交一乱一区二区洋洋av| 欧美一级黄色片视频| 日本在线播放一区二区三区| 一区二区三区 欧美| 极品少妇xxxx精品少妇偷拍| 永久免费黄色片| 成人国产精品免费| 中文字幕一二三四区| 亚洲国产成人自拍| 九九热视频在线免费观看| 一区二区三区在线免费播放| 免费观看一级视频| 色8久久精品久久久久久蜜 | 人人超碰91尤物精品国产| 欧美成年人视频在线观看| 国产一区二区福利| 天天躁日日躁狠狠躁免费麻豆| 久久婷婷综合激情| 精品无码国产污污污免费网站 | 亚洲ai欧洲av| 欧美一区成人| 中文字幕日本最新乱码视频| 蜜桃精品在线观看| 国内自拍偷拍视频| 久久久国产一区二区三区四区小说 | 日韩va亚洲va欧洲va国产| 欧美日韩国产综合视频| 日韩小视频网址| 182在线视频观看| 日本国产欧美一区二区三区| 日韩一级特黄| 国产精品综合久久久久久| 国模吧精品视频| 日韩一二区视频| 久久久亚洲一区| 国产伦精品一区二区三区妓女下载| 99视频精品在线| 小向美奈子av| 天天av天天翘天天综合网| 91高潮大合集爽到抽搐| 欧美精品一区二区三区高清aⅴ | 欧美日韩一本| 永久域名在线精品| 国产精品一卡| 最好看的中文字幕| 欧美激情一区二区在线| 69精品久久久| 欧美一区二区三区人| 成人性生交大片免费看午夜| 久久久久久久影院| 国模大尺度视频一区二区| 免费一区二区三区| 国产精品a久久久久| 亚洲成人福利在线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 性8sex亚洲区入口| 国产三级精品三级在线| 久久久一区二区| 国产在线观看99| 91精品国产综合久久精品| 国产粉嫩一区二区三区在线观看| 久久久免费电影| www.久久久久爱免| 亚洲精品中文字幕在线| 男人的天堂亚洲在线| 污污污www精品国产网站| 樱花草国产18久久久久| 亚洲图片在线播放| 在线播放国产一区中文字幕剧情欧美| 美女露胸视频在线观看| 国产精品国产一区二区| 欧美成人日韩| 天天爽夜夜爽视频| 一区免费观看视频| 一级黄色短视频| 中文字幕欧美日韩精品| 日韩免费小视频| 日韩高清在线播放| 天堂影院一区二区| 精品国产av无码| 色网站国产精品| 可以免费看污视频的网站在线| 538国产精品一区二区免费视频| 操欧美女人视频| 97在线国产视频| av不卡在线播放| 黄色一级片免费看| 亚洲国产小视频在线观看| 99爱在线视频| 久久精品ww人人做人人爽| 99成人精品| 在线观看av中文字幕| 精品毛片网大全| 男女网站在线观看| 国产成人激情视频| 欧美偷拍自拍| 日本一二区免费| 亚洲日本欧美天堂| 性欧美18一19性猛交| 久久久久成人网| 网友自拍区视频精品| 国产无套内射久久久国产| 国产日本欧洲亚洲| 国产精品欧美综合亚洲| 欧美成人午夜激情| av在线亚洲色图| 亚洲午夜精品久久久久久人妖| www久久久久| 一区二区小视频| 美日韩丰满少妇在线观看| 国产精品男女| 日韩欧美xxxx| 亚洲欧美日韩精品久久久久| 亚洲精品一区二区三区四区| 91精品国产色综合久久不卡98口 | 国产精品12区| 麻豆久久久久久久久久| 国产亚洲xxx| 日韩三级精品| 国产免费毛卡片| 亚洲日本va午夜在线影院| 成人无码一区二区三区| 日本精品性网站在线观看| 欧美电影一二区| 影音先锋资源av| 欧洲一区在线观看| 羞羞视频在线免费国产| 鲁丝片一区二区三区| 久久99久国产精品黄毛片色诱| 国产精彩视频在线| 国产亚洲精品美女久久久| 亚洲网址在线观看| 日本免费观看网站| 亚洲一区二区免费视频| 国产对白叫床清晰在线播放| 亚洲自拍偷拍视频| 久久午夜av| 日产欧产va高清| 日韩在线观看免费网站 | 日韩 国产 在线| 在线观看欧美日韩国产|