直接上**:
根據屬性進行對映:datatable轉化成實體list
publicstatic
class
datatableextension
list
entites = new list();
foreach (datarow dr in
dt.rows)
entites.add(t);
}return
entites;}}
}
但是需求往往沒有這麼簡單,如果屬性名稱和列名不一致,如列名是excel匯入過來的,就很有可能是漢字。
我的解決辦法就是,在實體模型中,新增attribute,來註明每個屬性和列名的對應關係,如下:
publicclass
bill
[column("姓名
")]public
string patientname
[column(
"結算日期")]
public datetime billdate
}
現在有兩種對映方式了,為了使**不要太難看,只能重構一下:
publicstatic
class
datatableextension
list
entites = new list();
foreach (datarow dr in
dt.rows)
return
entites;
}}
來看下自定義對映具體的實現:
publicprivate
public
typeof
(t).name, dict);}}
public
t maprow(datarow dr)
}return
t; }
}
在建構函式中定義了乙個靜態的字典,用於儲存實體中列名和屬性名的對應關係(這裡有點繞,我還沒想到更好的方法!),
具體呼叫方法:
publicstatic
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...