C#将DataTable转换成单个T实体和List<T>集合

来源:互联网 发布:搜狐网络大厦地铁路线 编辑:程序博客网 时间:2024/05/23 02:02
        /// 获得单个实体        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="dt"></param>        /// <returns></returns>        public static T Entity<T>(DataTable dt)        {            if (dt == null || dt.Rows.Count == 0)            {                return default(T);            }            T entity = default(T);            foreach (DataRow dr in dt.Rows)            {                entity = Activator.CreateInstance<T>();                PropertyInfo[] pis = entity.GetType().GetProperties();                foreach (PropertyInfo pi in pis)                {                    if (dt.Columns.Contains(pi.Name))                    {                        if (!pi.CanWrite)                        {                            continue;                        }                        if (dr[pi.Name] != DBNull.Value)                        {                            Type t = pi.PropertyType;                            //if (t.FullName == "System.Guid")                            //{                            //    pi.SetValue(entity, Guid.Parse(dr[pi.Name].ToString()), null);                            //}                            //else                            //{                            pi.SetValue(entity, dr[pi.Name], null);                            //}                        }                    }                }            }            return entity;        }        /// <summary>        /// 获得集合实体        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="dt"></param>        /// <returns></returns>        public static List<T> EntityList<T>(DataTable dt)        {            if (dt == null || dt.Rows.Count == 0)            {                return null;            }            List<T> list = new List<T>();            T entity = default(T);            foreach (DataRow dr in dt.Rows)            {                entity = Activator.CreateInstance<T>();                PropertyInfo[] pis = entity.GetType().GetProperties();                foreach (PropertyInfo pi in pis)                {                    if (dt.Columns.Contains(pi.Name))                    {                        if (!pi.CanWrite)                        {                            continue;                        }                        if (dr[pi.Name] != DBNull.Value)                        {                            Type t = pi.PropertyType;                            if (t.FullName == "System.Guid")                            {                                pi.SetValue(entity, Guid.Parse(dr[pi.Name].ToString()), null);                            }                            else                            {                                pi.SetValue(entity, dr[pi.Name], null);                            }                        }                    }                }                list.Add(entity);            }            return list;        }

0 0
原创粉丝点击