예제 #1
0
        /// <summary>
        /// 将DataTable转为List
        /// </summary>
        /// <typeparam name="T">实体类(必须有默认构造参数)</typeparam>
        /// <param name="dt">DataTable</param>
        /// <returns></returns>
        public static List <T> ToList <T>(DataTable dt) where T : new()
        {
            List <T> list = new List <T>();

            if (dt == null || dt.Rows.Count == 0)
            {
                return(list);
            }

            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                foreach (PropertyInfo prop in typeof(T).GetProperties())
                {
                    if (dr.Table.Columns.Contains(prop.Name))
                    {
                        if (dr[prop.Name] != DBNull.Value)
                        {
                            EmitSetter <T>(prop.Name)(t, dr[prop.Name]);
                        }
                    }
                }
                list.Add(t);
            }

            return(list);
        }
예제 #2
0
        /// <summary>
        /// 将IDataReader转换为实体
        /// </summary>
        /// <typeparam name="T">实体类(必须有默认构造参数)</typeparam>
        /// <param name="dr">IDataReader</param>
        /// <returns></returns>
        public static T ToEntity <T>(IDataReader dr) where T : new()
        {
            T t = default(T);

            if (dr.Read())
            {
                t = new T();
                foreach (PropertyInfo prop in typeof(T).GetProperties())
                {
                    if (dr[prop.Name] != DBNull.Value)
                    {
                        EmitSetter <T>(prop.Name)(t, dr[prop.Name]);
                    }
                }
            }
            return(t);
        }
예제 #3
0
        /// <summary>
        /// 将IDataReader转为实体
        /// </summary>
        /// <typeparam name="T">实体类(必须有默认构造参数)</typeparam>
        /// <param name="dr">IDataReader</param>
        /// <returns></returns>
        public static List <T> ToList <T>(IDataReader dr) where T : new()
        {
            List <T> list = new List <T>();

            while (dr.Read())
            {
                T t = new T();
                foreach (PropertyInfo prop in typeof(T).GetProperties())
                {
                    if (dr[prop.Name] != DBNull.Value)
                    {
                        EmitSetter <T>(prop.Name)(t, dr[prop.Name]);
                    }
                }
                list.Add(t);
            }
            return(list);
        }
예제 #4
0
        /// <summary>
        /// 将DataRow转为T
        /// </summary>
        /// <typeparam name="T">实体类(必须有默认构造参数)</typeparam>
        /// <param name="dr">DataRow</param>
        /// <returns></returns>
        public static T ToEntity <T>(DataRow dr) where T : new()
        {
            if (dr == null)
            {
                return(default(T));
            }

            T t = new T();

            foreach (PropertyInfo prop in typeof(T).GetProperties())
            {
                if (dr.Table.Columns.Contains(prop.Name))
                {
                    if (dr[prop.Name] != DBNull.Value)
                    {
                        EmitSetter <T>(prop.Name)(t, dr[prop.Name]);
                    }
                }
            }
            return(t);
        }