DataTable擴充套件 轉化實體ToList

2022-01-28 13:35:11 字數 1220 閱讀 4753

直接上**:

根據屬性進行對映:datatable轉化成實體list

public

static

class

datatableextension

list

entites = new list();

foreach (datarow dr in

dt.rows)

entites.add(t);

}return

entites;}}

}

但是需求往往沒有這麼簡單,如果屬性名稱和列名不一致,如列名是excel匯入過來的,就很有可能是漢字。

我的解決辦法就是,在實體模型中,新增attribute,來註明每個屬性和列名的對應關係,如下:

public

class

bill

[column("姓名

")]public

string patientname

[column(

"結算日期")]

public datetime billdate

}

現在有兩種對映方式了,為了使**不要太難看,只能重構一下:

public

static

class

datatableextension

list

entites = new list();

foreach (datarow dr in

dt.rows)

return

entites;

}}

來看下自定義對映具體的實現:

public

private

public

typeof

(t).name, dict);}}

public

t maprow(datarow dr)

}return

t; }

}

在建構函式中定義了乙個靜態的字典,用於儲存實體中列名和屬性名的對應關係(這裡有點繞,我還沒想到更好的方法!),

具體呼叫方法:

public

static

void

private

static

void

**上傳到github:

實體類與DataTable的轉化 適用任意型別

datatable與實體類互相轉換 實體類 public class modelhandlerwhere t new else 填充物件列表 用dataset的第index個表填充實體類 public listfillmodel dataset ds,int index else 填充物件列表 用d...

DATATABLE 與實體的互轉

datatable與實體類互相轉換 實體類 public class modelhandlerwhere t new else 填充物件列表 用dataset的第index個表填充實體類 public listfillmodel dataset ds,int index else 填充物件列表 用d...

將物件轉化為DataTable

imports system.collections.generic imports system.reflection public class tablebuilder of t private selectinfos as list of propertyinfo private propin...