如何从对象中获取数据行
How to get a DataRow from object
我正在尝试重用来自使用 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
如果可能的话,我正在寻找一种自动完成的方法
谢谢!
所以最后多亏了评论,我得到了这个有效的代码,但它可能会更好
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。
-- 编辑
Usually DataRow objects don't just hang out by themselves. They will belong to a DataTable. This method is creating a throwaway DataTable just to make a row. - siride
没错所以我改成了这个
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 并同时使用两者
我正在尝试重用来自使用 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
如果可能的话,我正在寻找一种自动完成的方法
谢谢!
所以最后多亏了评论,我得到了这个有效的代码,但它可能会更好
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。
-- 编辑
Usually DataRow objects don't just hang out by themselves. They will belong to a DataTable. This method is creating a throwaway DataTable just to make a row. - siride
没错所以我改成了这个
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 并同时使用两者