Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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));
 }