利用反射實現DataTable 與 List 轉換

2022-01-21 19:19:16 字數 2219 閱讀 2979

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

猛點我詳細見我的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);

list

p = dt.tolist();

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

public

static

void foreach(this ienumerableien,actionexpress)

}

方法二呼叫

list lst = 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 轉換

詳細見我的163部落格.net反射詳解 引msdn對擴充套件方法的定義 擴充套件方法使你能夠向現有型別 新增 方法 包括你自定義的型別和物件噢 而無需建立新的派生型別 重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但是可以像擴充套件型別上的例項方法一樣進行呼叫。對於用c 編寫的...

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...