我正在嘗試重用與 DataRow 而不是物件一起使用的專案中的一些代碼。在我的新專案中,我創建了模型,并且我使用物件進行所有作業,但我試圖帶來那段代碼,因為它非常大。所以問題是如何從物件中獲取 DataRow。
class Person
{
public Int64 Id { get; set; }
public string Name { get; set; }
}
Person p1 = new Person();
p1.Id = 1;
p1.Name = "John";
// How to get a DataRow from this p1 object
drPerson["Id"] == 1
drPerson["Name"] == John
如果可能的話,我正在尋找一種自動完成它的方法
謝謝!
uj5u.com熱心網友回復:
所以最后感謝評論,我得到了這個有效的代碼,但它可能會更好
public static DataRow ToDataRow(object from) {
DataTable dt = new DataTable();
foreach(PropertyInfo property in from.GetType().GetProperties()) {
DataColumn column = new DataColumn();
column.ColumnName = property.Name;
column.DataType = property.PropertyType;
dt.Columns.Add(column);
}
DataRow dr = dt.NewRow();
foreach(PropertyInfo property in from.GetType().GetProperties()) {
dr[property.Name] = property.GetValue(from);
}
return dr;
}
使用這些代碼,我可以使用列名稱作為物件屬性及其值的 DataRow。
- 編輯
通常 DataRow 物件不只是單獨掛出。它們將屬于一個 DataTable。此方法創建一個一次性的 DataTable 只是為了創建一行。- 賽瑞德
沒錯,所以我把它改成了這個
public static DataRow ToDataRow(object from, DataTable dt) {
DataRow dr = dt.NewRow();
foreach(PropertyInfo property in from.GetType().GetProperties()) {
dr[property.Name] = property.GetValue(from);
}
return dr;
}
public static DataTable GetDataTable(object from) {
DataTable dt = new DataTable();
foreach(PropertyInfo property in from.GetType().GetProperties()) {
DataColumn column = new DataColumn();
column.ColumnName = property.Name;
column.DataType = property.PropertyType;
dt.Columns.Add(column);
}
return dt;
}
通過此更改,我可以在獲取 DataRow 之前檢索 DataTable 并同時使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/466551.html
