/// <summary>
/// 把datatable数据转化为实体
/// </summary>
/// <param name="targetDataTable"></param>
/// <param name="materialInfomationModel"></param>
/// <param name="j"></param>
public void DateToModel(DataTable targetDataTable, ref MaterialInfomationModel materialInfomationModel, int j)
{
for (int k = 0; k < targetDataTable.Columns.Count; k++)
{
Type type1 = materialInfomationModel.GetType(); //反射获取当前实体的所有类别
foreach (PropertyInfo propertyInfo in type1.GetProperties())//反射获取 当前实体类的所有属性
{
string name = propertyInfo.Name;//得到属性的名称
object value1 = propertyInfo.GetValue(materialInfomationModel, null); //得到属性的值
if (targetDataTable.Columns[k].ColumnName == name)//如果 数据源的表的列名称=反射获取得到的属性名称
{
value1 = targetDataTable.Rows[j][k];//将 数据源的表的列名对应的值 赋值给实体属性
if (value1 != DBNull.Value)//如果 数据源的表 对应的列的 值!=属性的值
{
propertyInfo.SetValue(materialInfomationModel, value1, null);//将新的值 通过反射来设置给实体
}
continue;
}
}
}
}
反射要映入命名空间:
using System.Reflection;
//获取当前实体的所有类别
Type t = taskEN.GetType();
//获取属性列表
System.Reflection.PropertyInfo[] ps = t.GetProperties();
foreach (System.Reflection.PropertyInfo p in ps)
{
//分别输入 属性名称及值
str.AppendFormat("{0}: {1}<br/>", p.Name, p.GetValue(taskEN, null));
}