/// <summary> /// 从 reader 对象中逐行读取记录并将记录转化为 T 类型的集合 /// </summary> /// <typeparam name="T">目标类型参数</typeparam> /// <param name="reader">实现 IDataReader 接口的对象。</param> /// <returns>指定类型的对象集合。</returns> public static List <T> ConvertToList <T>(IDataReader reader) where T : class { List <T> list = new List <T>(); T obj = default(T); Type t = typeof(T); Assembly ass = t.Assembly; Dictionary <string, PropertyInfo> propertys = ModelConvertor.GetFields <T>(reader); PropertyInfo p = null; if (reader != null) { while (reader.Read()) { obj = ass.CreateInstance(t.FullName) as T; foreach (string key in propertys.Keys) { p = propertys[key]; p.SetValue(obj, ModelConvertor.ChangeType(reader[p.GetColumnName()], p.PropertyType), null); } list.Add(obj); } } return(list); }
/// <summary> /// 从 DataTale 对象中逐行读取记录并将记录转化为 T 类型的集合 /// </summary> /// <typeparam name="T">目标类型参数</typeparam> /// <param name="reader">DataTale 对象。</param> /// <returns>指定类型的对象集合。</returns> public static List <T> ConvertToList <T>(DataTable table) where T : class { return(table == null ? new List <T>() : ModelConvertor.ConvertToList <T>(table.CreateDataReader() as IDataReader)); }