作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
比如我有一个类的对象:
class MyClass
{
public int a { get; set; }
public string b { get; set; }
public DateTime c { get; set; }
}
我有一个 DataTable 对象,其中的列与 MyClass 中的列同名。有没有一种快速/简单的方法可以将 DataTable 对象的每一行复制到 MyClass 对象。
像这样(但在我的例子中我有太多列):
for (int x = 0; x < dataTableObj.Rows.Count; x++)
{
myClassObj[x].a = dataTableObj.Rows[x]["a"];
myClassObj[x].b = dataTableObj.Rows[x]["b"];
myClassObj[x].c = dataTableObj.Rows[x]["c"];
}
谢谢你
最佳答案
正是出于这个目的,我在下面使用了这个方法,数据表列和类型属性应该具有相同的名称。
public static List<T> TableToList<T>(DataTable table)
{
List<T> rez = new List<T>();
foreach (DataRow rw in table.Rows)
{
T item = Activator.CreateInstance<T>();
foreach (DataColumn cl in table.Columns)
{
PropertyInfo pi = typeof(T).GetProperty(cl.ColumnName);
if (pi != null && rw[cl] != DBNull.Value)
{
var propType = Nullable.GetUnderlyingType(pi.PropertyType) ?? pi.PropertyType;
pi.SetValue(item, Convert.ChangeType(rw[cl], propType), new object[0]);
}
}
rez.Add(item);
}
return rez;
}
关于c# - 如何在 C# 中将 DataTable 行复制到对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588190/
我是一名优秀的程序员,十分优秀!