擴充套件方法(1) DataTable 和List 相互轉換
public static class DataTableExtensions { /// <summary> /// DataTable 轉換為List 集合 /// </summary> /// <typeparam name="TResult">型別</typeparam> /// <param name="dt">DataTable</param> /// <returns></returns> public static List<TResult> ToList<TResult>(this DataTable dt) where TResult : class,new() { //建立一個屬性的列表 List<PropertyInfo> prlist = new List<PropertyInfo>(); //獲取TResult的型別例項 反射的入口 Type t = typeof(TResult); //獲得TResult 的所有的Public 屬性 並找出TResult屬性和DataTable的列名稱相同的屬性(PropertyInfo) 並加入到屬性列表 Array.ForEach<PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); }); //建立返回的集合 List<TResult> oblist = new List<TResult>(); foreach (DataRow row in dt.Rows) { //建立TResult的例項 TResult ob = new TResult(); //找到對應的資料 並賦值 prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); }); //放入到返回的集合中. oblist.Add(ob); } return oblist; } } /// <summary> /// 轉換為一個DataTable /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="value"></param> /// <returns></returns> public static DataTable ToDataTable<TResult>(this IEnumerable<TResult> value) where TResult : class { //建立屬性的集合 List<PropertyInfo> pList = new List<PropertyInfo>(); //獲得反射的入口 Type type = typeof(TResult); DataTable dt = new DataTable(); //把所有的public屬性加入到集合 並新增DataTable的列 Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p);dt.Columns.Add(p.Name, p.PropertyType); }); foreach (var item in value) { //建立一個DataRow例項 DataRow row = dt.NewRow(); //給row 賦值 pList.ForEach(p => row[p.Name] = p.GetValue(item, null)); //加入到DataTable dt.Rows.Add(row); } return dt; } }
相關文章
- DataTable與List相互轉換
- asp.net中DataTable和List之間相互轉換ASP.NET
- DataTable轉換list泛型集合(反射)泛型反射
- 轉:java中陣列與List相互轉換的方法Java陣列
- in_list查詢與or擴充套件套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 開源 - Ideal庫 - 常用時間轉換擴充套件方法(一)Idea套件
- 開源 - Ideal庫 - 常用時間轉換擴充套件方法(二)Idea套件
- Java SE(12) 擴充套件——進位制轉換Java套件
- Json擴充套件方法JSON套件
- LINQ擴充套件方法套件
- 開源 - Ideal庫 - 常用時間轉換擴充套件方法(二)QvIdea套件
- c# DataTable轉ListC#
- DataTable 轉為 List<dynamic>
- List擴充套件方法出錯,this關鍵詞出錯,解決方案套件
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- (精華)2020年6月26日 C#類庫 DataTable(擴充套件方法)C#套件
- bootstrap – 基於ul的擴充套件 list + listgroup + dropdownboot套件
- 再學Blazor——擴充套件方法Blazor套件
- C#.NET擴充套件方法C#套件
- android view 擴充套件方法AndroidView套件
- C# 擴充套件方法 借籤於 Objective-C 擴充套件類.C#套件Object
- C#新特性:匿名類和擴充套件方法C#套件
- 擴充套件Delphi的執行緒同步物件(1) (轉)套件執行緒物件
- OpenGL 1.3 最新擴充套件 (轉)套件
- 擴充套件你的STRUTS (轉)套件
- 來看看兩種好玩的方法,擴充套件方法和分部方法套件
- 轉向Kotlin——列舉類和擴充套件Kotlin套件
- 簡單易用的JSON與List相互轉換JSON
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- tonyenc加密擴充套件使用方法加密套件
- Java 缺失的特性:擴充套件方法Java套件
- 五、談擴充套件方法的理解套件
- JavaScript String 物件擴充套件方法JavaScript物件套件
- CheckBoxList擴充套件方法程式碼套件
- RVA和RAW相互轉換
- Oracle 12CR2查詢轉換之表擴充套件Oracle套件
- 兩個簡單的擴充套件方法:TrimPrefix和TrimSuffix套件