最近在作一個項目,表的數據巨多,並且表的字段通常都在30個以上。公司規定不能用Nhibernate以及ef等ORM框架。框架
因此查詢綁定時的工做量極爲痛苦。沒有辦法,本身寫了個DataTableToList方法來簡化一下,但願對你們有所幫助。spa
其實這個方法主要是用泛型方法來實現的,代碼以下,僅供參考若有不妥,歡迎拍磚!hibernate
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource =result(); GridView1.DataBind(); } } private List<Student> result() { DataTable dt = new DataTable(); DataColumn[] cols = new DataColumn[] { new DataColumn(){ ColumnName="name"}, new DataColumn(){ ColumnName="sex"}, new DataColumn(){ ColumnName="age"} }; dt.Columns.AddRange(cols); List<object[]> rows = new List<object[]> { new object[] { "xiaochun","man","22"}, new object[] { "xiaochun1", "man", "22" }, new object[] { "xiaochun2", "man", "22" } }; Array.ForEach(rows.ToArray(),row=>dt.Rows.Add(row)); List<Student> stuList = new List<Student>(); stuList = DataTableToList(new Student(),dt); return stuList; } private List<T> DataTableToList<T>(T obj,DataTable dt) { List<T> list = new List<T>(); foreach (DataRow row in dt.Rows) { Type t=typeof(T); PropertyInfo[] info = t.GetProperties(); foreach (DataColumn col in dt.Columns) { info.Where(s => s.Name.ToLower() == col.ColumnName.ToLower()) .Select(s => s).First().SetValue(obj,row[col.ColumnName].ToString(),null); } list.Add(obj); } return list; } } public class Student{ public string name{get;set;} public string sex{get;set;} public string age{get;set;} }