日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

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

Linq To DataTable

Linq已經(jīng)讓我們感覺不到Query的難點, 它讓我們很容易的實現(xiàn)高難度的Query。 或許剩下的問題, 也許是很簡單的問題就是如何保存這些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} 集合,但是這個匿名類型就沒辦法作為變量 return 給另外一個方法調(diào)用。

可能把這個{CustomerID , ContactName, CompanyName} 集合反射到一個DataTable類型是比較符合一般數(shù)據(jù)庫需求的, 或許說這也是某些舊系統(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. }

文章標(biāo)題:LinqToDataTable學(xué)習(xí)筆記
路徑分享:http://www.dlmjj.cn/article/cdodege.html