程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> DataTable轉換為Model實體對象,datatablemodel

DataTable轉換為Model實體對象,datatablemodel

編輯:C#入門知識

DataTable轉換為Model實體對象,datatablemodel


  記得在學校的時候,接觸得最多的就是SqlHelper,每次在讀取的時候不管是DataTable還是DataReader轉換為實體對象的時候是最惱火的,因為要寫很多代碼,而且沒有什麼意義。後面接觸到了反射,於是查了下資料也寫了個已經爛大街的DataTable轉換為Model實體對象

 

 1 public static IEnumerable<T> DataTableToModels<T>(this DataTable dt) where T : class, new()
 2         {
 3             //判斷datatable是否有值
 4             if (dt.Columns.Count < 1 || dt.Rows.Count < 1) yield return default(T);
 5             //獲取實體類中所有公開的屬性,並且篩選出在datatable中存在的列
 6             var propertyInfos = from propertyInfo in typeof(T).GetProperties()
 7                                 where dt.Columns.Contains(propertyInfo.Name)
 8                                 select propertyInfo;
 9             //循環設置屬性
10             foreach (DataRow dr in dt.Rows)//遍歷dt中所有行
11             {
12                 var result = new T();
13                 foreach (var p in propertyInfos)//遍歷所有屬性
14                 {
15                     try
16                     {
17                         p.SetValue(result, dr[p.Name], null);
18                     }
19                     catch (System.Exception)
20                     {
21 
22                         throw;
23                     }
24                 }
25                 yield return result;
26             }
27 
28         }

 

需要注意的是DataTable.Columns.Contains和賦值給定Name時是不區分大小寫的!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved