日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
LinqToDataTable學(xué)習(xí)筆記

Linq 有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq To DataTable,包括介紹DataTable類型等方面。

專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)甘孜州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

Linq To DataTable

Linq已經(jīng)讓我們感覺不到Query的難點(diǎn), 它讓我們很容易的實(shí)現(xiàn)高難度的Query。 或許剩下的問題, 也許是很簡(jiǎn)單的問題就是如何保存這些Query結(jié)果?

 
 
 
  1. var _result = DAL.Utility.SelectAll();
  2. var _filter =
  3. from q in _result
  4. where q.CustomerID.StartsWith("B")
  5. select new
  6. {
  7. q.CustomerID,
  8. q.ContactName,
  9. q.CompanyName
  10. };

_result 是搜索所有Customer的結(jié)果,_filter 是 _result 中 CustomerID 以“B”開始的{CustomerID , ContactName, CompanyName} 集合,但是這個(gè)匿名類型就沒辦法作為變量 return 給另外一個(gè)方法調(diào)用。

可能把這個(gè){CustomerID , ContactName, CompanyName} 集合反射到一個(gè)DataTable類型是比較符合一般數(shù)據(jù)庫(kù)需求的, 或許說這也是某些舊系統(tǒng)輕松插上Linq翅膀的一種方案。

下面給出Linq To DataTable的方法(某種意義上是一樣的):

 
 
 
  1. public static System.Data.DataTable LinqToDataTable(IEnumerable data)
  2. {
  3. var dt = new System.Data.DataTable();
  4. var ps = typeof(T).GetProperties().ToList();
  5. ps.ForEach(p => dt.Columns.Add(p.Name, p.PropertyType));
  6. foreach (T t in data)
  7. {
  8. var dr = dt.NewRow();
  9. var vs = from p in ps select p.GetValue(t, null);
  10. var ls = vs.ToList();
  11. int i = 0;
  12. ls.ForEach(c => dr[i++] = c);
  13. dt.Rows.Add(dr);
  14. }
  15. return dt;
  16. }
  17. public static System.Data.DataTable ToDataTable(IEnumerable data)
  18. {
  19. var dt = new System.Data.DataTable();
  20. var ps= System.ComponentModel.TypeDescriptor.GetProperties(typeof(T));
  21. foreach (System.ComponentModel.PropertyDescriptor dp in ps )
  22. dt.Columns.Add(dp.Name, dp.PropertyType);
  23. foreach (T t in data)
  24. {
  25. var dr = dt.NewRow();
  26. foreach (System.ComponentModel.PropertyDescriptor dp in ps)
  27. dr[dp.Name] = dp.GetValue(t);
  28. dt.Rows.Add(dr);
  29. }
  30. return dt;
  31. }

名稱欄目:LinqToDataTable學(xué)習(xí)筆記
文章位置:http://www.5511xx.com/article/cdodege.html