///将Datetable转换为实体list 集合
public List<Model> ConvertDataTableToList(DataTable dt){
// 定义集合
List<Model> models = new List<Model>();
string tempName = "";
foreach (DataRow dr in dt.Rows)
{
Model model = new Model();
// 获得此模型的公共属性
PropertyInfo[] propertys = model.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)// 循环遍历Model 实体属性名
{
tempName = pi.Name; // 获取Model 实体属性名
if (dt.Columns.Contains(tempName)) // 检查DataTable是否包含此列
{
// 判断此Model 的属性是否有可写 set
if (!pi.CanWrite) continue;
object value = dr[tempName];//获取DataTable中对应的属性值
if (value != DBNull.Value)//判断取出的数据库只是否为空,DBNull.Value,是适用于向数据库的表中插入空值,DBNull.Value是一个有着内存地址的具体类型的值,映射了数据库中的null值
{
pi.SetValue(model, value, null);//SetValue 说明: https://blog.csdn.net/weixin_42263618/article/details/103748279
}
}
}
models.Add(model);
}
return models;
}
}