using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ICSSoft.Frame.Common
{
using System.Data;
using System.Reflection;
///
/// 将DataTable数据源转换成实体类
///
/// 实体
public static class ToModel where T : new()
{
///
/// 将DataTable数据源转换成实体类
///
public static List ConvertToModel(DataTable dt)
{
List ts = new List();
foreach (DataRow dr in dt.Rows)
{
T t = new T();
PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
foreach (PropertyInfo pi in propertys)
{
if (dt.Columns.Contains(pi.Name))
{
if (!pi.CanWrite) continue;
var value = dr[pi.Name];
if (value != DBNull.Value)
{
switch (pi.PropertyType.FullName)
{
case "System.Decimal":
pi.SetValue(t, decimal.Parse(value.ToString()), null);
break;
case "System.String":
pi.SetValue(t, value.ToString(), null);
break;
case "System.Int32":
pi.SetValue(t, int.Parse(value.ToString()), null);
break;
case "System.Guid":
pi.SetValue(t, new System.Guid(value.ToString()), null);
break;
case "System.Double":
pi.SetValue(t, Convert.ToDouble(value ?? 0), null);
break;
default:
pi.SetValue(t, value, null);
break;
}
}
}
}
ts.Add(t);
}
return ts;
}
}
}