利用反射實現DataTable 與 List 轉換

2021-09-07 11:34:47 字數 1751 閱讀 9954

詳細見我的163部落格.net反射詳解

引msdn對擴充套件方法的定義: 擴充套件方法使你能夠向現有型別「新增」方法(包括你自定義的型別和物件噢),而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但是可以像擴充套件型別上的例項方法一樣進行呼叫。對於用c#編寫的客戶端**,呼叫擴充套件方法與呼叫在型別中實際定義的方法之間沒有明顯的差異。

說了這麼多,開始上**。

方法一:擴充套件方法與反射實現 datatable 轉 list

public static  listtolist(this datatable dt) where t:class,new()

else if (pi.propertytype == typeof(int) || pi.propertytype == typeof(int?))

else if (pi.propertytype == typeof(datetime?) || pi.propertytype == typeof(datetime))

else if (pi.propertytype == typeof(float))

else if (pi.propertytype == typeof(double))

else}}

lst.add(entity);

}return lst;

}

方法一呼叫

(1)首先建立乙個實體類

public class people

public int age

}

(2)呼叫

datatable dt = new datatable();

dt.columns.add("name");

dt.columns.add("age");

datarow dr = dt.newrow();

dr[0] = "eric";

dr[1] = 20;

dt.rows.add(dr);

dr = dt.newrow();

dr[0] = "eric1";

dr[1] = 22;

dt.rows.add(dr);

listp = dt.tolist();

方法二:擴充套件方法與action委託實現陣列的遍歷操作(foreach)

public static void foreach(this ienumerableien,actionexpress)

}

方法二呼叫

listlst = new list();

var arr = new string[3] ;

arr.foreach(it => lst.add(it));//這裡面可以做更複雜的處理

response.write(lst[0]);

方法三:利用方法一和方法二實現list轉換datatable

public static datatable todatatable(this ienumerablevalue) where t : class,new()

)也是一樣

else

});if (value != null)

);dt.rows.add(row);}}

return dt;

}

ok了 今天就到此為止了,睡覺嘍。每天學習一點點,每天進步一點點。

利用反射實現DataTable 與 List 轉換

今天上班不太忙,就想著總結一下反射 擴充套件方法 以及lambda表示式的用法,自己就寫了個小demo記錄一下,希望各位大牛們看到後覺得不對的地方請及時提出。這篇文章中我只說明我的用法,作為乙個備忘,基本的語法我不講解,對這些概念不熟悉的童鞋在上搜素一下,呢那個找到很多相關的講解,小弟就先拋磚引玉了...

C 利用委託反射將DataTable轉換為實體集

2012 04 19 來自 cnblogs 字型大小 大中 小 類泛型的約束 public static class tomodelwhere t class,new 定義委託 public delegate void setstring string value 建立委託方法 private st...

利用委託反射將DataTable轉換為實體集

類泛型的約束 1 public static class tomodelwhere t class,new 定義委託 1 public delegate void setstring string value 建立委託方法 1 private static setstring createstrin...