Ejemplo n.º 1
0
        /// <summary>
        /// 将 datatable 转换为 list
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="table"></param>
        /// <returns></returns>
        public static List <T> ToList <T>(this DataTable table) where T : class, new()
        {
            var list = new List <T>();

            var _Entity      = ReflexHelper.CreateInstance <T>();
            var propertyInfo = _Entity.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);

            foreach (DataRow dr in table.Rows)
            {
                _Entity = ReflexHelper.CreateInstance <T>();
                foreach (var item in propertyInfo)
                {
                    string AttrName = item.Name;
                    foreach (DataColumn dc in dr.Table.Columns)
                    {
                        if (AttrName != dc.ColumnName)
                        {
                            continue;
                        }
                        if (dr[dc.ColumnName] != DBNull.Value)
                        {
                            item.SetValue(_Entity, dr[dc.ColumnName], null);
                        }
                        else
                        {
                            item.SetValue(_Entity, null, null);
                        }
                    }
                }
                list.Add(_Entity);
            }
            return(list);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// DataRow 转换 实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dr"></param>
        /// <returns></returns>
        public static T ToEntity <T>(this DataRow dr) where T : class, new()
        {
            var _Entity = ReflexHelper.CreateInstance <T>();
            var list    = _Entity.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);

            if (list.Length == 0)
            {
                throw new Exception("找不到任何 公共属性!");
            }

            foreach (var item in list)
            {
                string AttrName = item.Name;
                foreach (DataColumn dc in dr.Table.Columns)
                {
                    if (AttrName != dc.ColumnName)
                    {
                        continue;
                    }
                    if (dr[dc.ColumnName] != DBNull.Value)
                    {
                        item.SetValue(_Entity, dr[dc.ColumnName], null);
                    }
                }
            }
            return(_Entity);
        }