///將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;
}
}