C# DataTable 轉 List 方法,網上有好多,之前也收集了,感覺這個也不錯,重要是自己要領會這里面的代碼含義。
接不來我就把代碼貼出來分享一下,大家覺得如果不好,請留言我,我來改進。
using System; using System.Collections.Generic; using System.Data; using System.Reflection; namespace jdrz.HumanIdentify { public class Helper { /// <summary> /// DataTable 轉換為List 集合 /// </summary> /// <typeparam name="TResult">類型</typeparam> /// <param name="dt">DataTable</param> /// <returns></returns> public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new() { //創建一個屬性的列表 var prlist = new List<PropertyInfo>(); //獲取TResult的類型實例 反射的入口 var t = typeof(TResult); //獲得TResult 的所有的Public 屬性 並找出TResult屬性和DataTable的列名稱相同的屬性(PropertyInfo) 並加入到屬性列表 Array.ForEach(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); }); //創建返回的集合 var oblist = new List<TResult>(); foreach (DataRow row in dt.Rows) { //創建TResult的實例 var ob = new TResult(); //找到對應的數據 並賦值 prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); }); //放入到返回的集合中. oblist.Add(ob); } return oblist; } } }
總結一下:
其實我想重寫下Ado.net ,因為之前我們公司用的都是直接dataset to datatable ,現在發現 to list更方便(不知道大家有沒有這種感覺),
我自己用的是Nhibernate,所以基於公司內部的話,我想再寫個Ado.net 轉換數據的dll,最后我想說的是,大家在公司里都是用什么開發的?
ado.net?nhibernate?Elinq?entityframework?希望大家一起討論討論!