/// <summary>
/// table行数据转化成指定对象
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <param name="row"></param>
/// <returns></returns>
public static TModel ToModel<TModel>(DataRow row) where TModel : class
{
if (row == null)
{
throw new ArgumentNullException("row 为 NULL");
}
else
{
var model = System.Activator.CreateInstance<TModel>();
Dictionary<string, object> k_v = new Dictionary<string, object>();
var cols = row.Table.Columns;
foreach (DataColumn item_c in cols)
{
if (Convert.IsDBNull(row[item_c]))
{
//设置默认值
var default_value = item_c.DataType.IsValueType ? Activator.CreateInstance(item_c.DataType) : null;
k_v.Add(item_c.ColumnName.ToUpper(), default_value);
}
else
{
k_v.Add(item_c.ColumnName.ToUpper(), row[item_c]);
}
}
var pros = model.GetType().GetProperties();
object value;
foreach (var item_p in pros)
{
if (k_v.TryGetValue(item_p.Name.ToUpper(), out value))
{
item_p.SetValue(model, value, null);
}
}
return model;
}
}
/// <summary>
/// table转换成指定对象集合
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public static List<TModel> ToModel<TModel>(DataTable dt) where TModel : class
{
if (dt == null)
{
throw new ArgumentNullException("dt 为 NULL");
}
List<TModel> list = new List<TModel>();
foreach (DataRow item in dt.Rows)
{
list.Add(ToModel<TModel>(item));
}
return list;
}