Datatable转为List / DataRow转为实体类对象

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace cfzs.DAL
{
    public class BaseDAL
    {
        #region DataTale转为实体列表
        /// <summary>
        /// DataTale转为实体列表
        /// </summary>
        /// <typeparam name="T">实体类类型</typeparam>
        /// <param name="table">DataTable</param>
        /// <returns>List<T></returns>
        public List<T> DataTableToModelList<T>(DataTable table)
        {
            List<T> list = new List<T>();
            T t = default(T);
            PropertyInfo[] propertypes = null;
            string tempName = string.Empty;
            foreach (DataRow row in table.Rows)
            {
                t = Activator.CreateInstance<T>();
                propertypes = t.GetType().GetProperties();
                foreach (PropertyInfo pro in propertypes)
                {
                    tempName = pro.Name;
                    if (table.Columns.Contains(tempName))
                    {
                        object value = row[tempName];
                        if (value.GetType() == typeof(System.DBNull))
                        {
                            value = null;
                        }
                        pro.SetValue(t, value, null);
                    }
                }
                list.Add(t);
            }
            return list;
        }
        #endregion
        #region   DataRow转为实体类
        /// <summary>
        /// DataRow转为实体类
        /// </summary>
        /// <typeparam name="T">实体类类型</typeparam>
        /// <param name="row">DataRow</param>
        /// <returns>T</returns>
        public T DataRowToModel<T>(DataRow row)
        {

            T t = default(T);
            PropertyInfo[] propertypes = null;
            string tempName = string.Empty;
            t = Activator.CreateInstance<T>();
            propertypes = t.GetType().GetProperties();
            foreach (PropertyInfo pro in propertypes)
            {
                tempName = pro.Name;
                if (row.Table.Columns.Contains(tempName))
                {
                    object value = row[tempName];
                    if (value.GetType() == typeof(System.DBNull))
                    {
                        value = null;
                    }
                    pro.SetValue(t, value, null);
                }
            }
            return t;
        }
        #endregion
    }
}


你可能感兴趣的:(Datatable转为List / DataRow转为实体类对象)