马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

DataTable转换成List集合2

[复制链接]
查看3226 | 回复3 | 2018-8-9 15:27:46 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
/// <summary>
        /// 把Dt转换成实体集合
        /// </summary>
        /// <typeparam name="T">实体</typeparam>
        /// <param name="dt">表</param>
        /// <returns></returns>
        public List<T> DtOrList<T>(DataTable dt) where T : class, new()
        {
            try
            {
                List<T> list = new List<T>();
                string sStr = "";
                foreach (DataColumn item in dt.Columns)
                {
                    sStr += item.ColumnName.ToUpper() + ",";
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //============================== 创建实体实例并获取实例中的所有公共属性 =========================
                    T t = Activator.CreateInstance<T>();
                    PropertyInfo[] PrInfo = t.GetType().GetProperties();
                    // end========================== 创建实体实例并获取实例中的所有公共属性 =========================
                    foreach (PropertyInfo Info in PrInfo)
                    {
                        //====================== 当属性名称和列名相同时对实体字段进行赋值 ========================
                        if (sStr.Contains(Info.Name.ToUpper()))
                        {
                            if (dt.Rows[i][Info.Name] != DBNull.Value)
                            {
                                /*此处加入类型判断及转换*/
                                Info.SetValue(t, dt.Rows[i][Info.Name], null);
                            }
                            else
                            {
                                Info.SetValue(t, null, null);
                            }
                            break;
                        }
                        // end================== 当属性名称和列名相同时对实体字段进行赋值 ========================
                    }
                    list.Add(t);
                }
                return list;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }


比之前的方法在性能进行了优化,降低了时间复杂度,提交了转换效率。。。


ibcadmin | 2018-8-9 23:25:48 | 显示全部楼层
++++++
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则