C# datatable转model

 
/// <summary>
        ///     DataTable -> Model
        /// </summary>
        /// <typeparam name="T">数据项</typeparam>
        /// <param name="dt">DataTable</param>
        /// <returns></returns>
        public static T DataTableToModel<T>(DataTable dt) where T : new()
        {

            var t = new T();
            // 获取行数据
            var dr = dt.Rows[0];
            // 获取栏目
            var columns = dt.Columns;
            // 获得此模型的公共属性
            var property = t.GetType().GetProperties();
            foreach (var pi in property)
            {
                var name = pi.Name;
                // 检查DataTable是否包含此列    
                if (columns.Contains(name))
                {
                    if (!pi.CanWrite) continue;
                    var value = dr[name];
                    if (value != DBNull.Value) pi.SetValue(t, value, null);
                }
            }
            return t;
        }

        /// <summary>
        ///     DataTable -> List
        /// </summary>
        /// <typeparam name="T">数据项</typeparam>
        /// <param name="dt">DataTable</param>
        /// <returns></returns>
        public static List<T> DataTableToList<T>(DataTable dt) where T : new()
        {
            if (dt == null || dt.Rows.Count == 0) return new List<T>();
            // 定义集合
            var list = new List<T>();
            // 获取栏目
            var columns = dt.Columns;
            foreach (DataRow dr in dt.Rows)
            {
                var t = new T();
                // 获得此模型的公共属性
                var property = t.GetType().GetProperties();
                foreach (var pi in property)
                {
                    var name = pi.Name;
                    // 检查DataTable是否包含此列    
                    if (columns.Contains(name))
                    {
                        if (!pi.CanWrite) continue;
                        var value = dr[name];
                        if (value != DBNull.Value) pi.SetValue(t, value, null);
                    }
                }
                list.Add(t);
            }
            return list;
        }

 

posted @ 2022-11-03 11:20  我不是白菜啊  阅读(148)  评论(0编辑  收藏  举报