C#—Table To list 和 List To Table 操作

    技术2022-05-20  37

    C#—Table To list 和 List To Table 操作1.using System.Reflection;//常规的命名空间,省略...2.PositionList类结构   public class PositionList    {        public int position_id{get;set;}        public string position_full_name{get;set;}        public int job_id{get;set;}        public int order_id{get;set;}        public Boolean no_homepage{get;set;}        public string job_status_display_name{get;set;}    }3. 实体转换辅助类 Table To List 和 List To Table方法        /// <summary>        /// -Table To List        /// </summary>        public IList<PositionList> ConvertToModel(DataTable dt)        {

                IList<PositionList> ts = new List<PositionList>();// 定义集合            Type type = typeof(PositionList); // 获得此模型的类型            string tempName = "";            foreach (DataRow dr in dt.Rows)            {                PositionList t = new PositionList();                PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性                foreach (PropertyInfo pi in propertys)                {                    tempName = pi.Name;                    if (dt.Columns.Contains(tempName))                    {                        if (!pi.CanWrite) continue;                        object value = dr[tempName];                        if (value != DBNull.Value)                            pi.SetValue(t, value, null);                    }                }                ts.Add(t);            }            return ts;        }

            /// <summary>        /// 将集合类转换成DataTable        /// </summary>        /// <param name="list">集合</param>        /// <returns></returns>        public DataTable ToDataTable(IList list)        {            DataTable result = new DataTable();            if (list.Count > 0)            {                PropertyInfo[] propertys = list[0].GetType().GetProperties();                foreach (PropertyInfo pi in propertys)                {                    result.Columns.Add(pi.Name, pi.PropertyType);                }

                    for (int i = 0; i < list.Count; i++)                {                    ArrayList tempList = new ArrayList();                    foreach (PropertyInfo pi in propertys)                    {                        object obj = pi.GetValue(list[i], null);                        tempList.Add(obj);                    }                    object[] array = tempList.ToArray();                    result.LoadDataRow(array, true);                }            }            return result;        }4.调用方式://其中dt_Position为得到的DataTable数据,因为这边需求只需获取1条IList<PositionList> list_Position = ConvertToModel(dt_Position);dvPositionList.DataSource = ToDataTable((from u in list_Position select u).Skip(1).Take(1).ToList());dvPositionList.DataBind();


    最新回复(0)