将数据库查询出来的信息进行自动映射到实体中
转换代码:
public class DataTableHelper<T> where T : class
{
/// <summary>
/// 用DataTable转换实体类
/// </summary>
public static List<T> DataTableConvertToModel(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
{
return null;
}
List<T> modelList = new List<T>();
foreach (DataRow dr in dt.Rows)
{
T model = (T)Activator.CreateInstance(typeof(T));
for (int i = 0; i < dr.Table.Columns.Count; i++)
{
PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
if (propertyInfo != null && dr[i] != DBNull.Value)
propertyInfo.SetValue(model, Convert.ChangeType(dr[i], propertyInfo.PropertyType), null);
}
modelList.Add(model);
}
return modelList;
}
}
使用:
// 表的映射
// 返回的是一个list集合 这里只有一条数据 就取第一个
TaskDTO taskDTO = DataTableHelper<TaskDTO>.DataTableConvertToModel(taskTable)[0];
TaskDTO 类的定义需要和数据库中的字段类型一致