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