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

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

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

官方一群:

官方二群:

DataTable转换成List集合

  [复制链接]
查看9146 | 回复8 | 2017-11-15 16:56:26 | 显示全部楼层 |阅读模式
[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>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //============================== 创建实体实例并获取实例中的所有公共属性 =========================
                    T t = Activator.CreateInstance<T>();
                    PropertyInfo[] PrInfo = t.GetType().GetProperties();
                    // end========================== 创建实体实例并获取实例中的所有公共属性 =========================
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        foreach (PropertyInfo Info in PrInfo)
                        {
                            //====================== 当属性名称和列名相同时对实体字段进行赋值 ========================
                            if (dt.Columns[j].ColumnName.ToUpper().Equals(Info.Name.ToUpper()))
                            {
                                if (dt.Rows[i][j] != DBNull.Value)
                                { 
                                    Info.SetValue(t, dt.Rows[i][j], null);
                                }
                                else
                                {
                                    Info.SetValue(t, null, null);
                                }
                                break;
                            } 
                            // end================== 当属性名称和列名相同时对实体字段进行赋值 ========================
                        }
                    }
                    list.Add(t);
                }
                return list;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

此方法转换性能并不是最优的,有兴趣的可以尝试着进行优化
如想要更优的方法,请留言
ibcadmin | 2017-11-15 22:46:18 | 显示全部楼层
好久没看到教程了。。
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2017-11-16 08:56:38 | 显示全部楼层
ibcadmin 发表于 2017-11-15 22:46
好久没看到教程了。。

菜鸟一只 | 2018-1-24 13:11:46 | 显示全部楼层
大神,总结的很好,学习,谢谢
xzp132706 | 2018-3-20 11:55:29 | 显示全部楼层
xie
xzp132706 | 2018-3-20 11:55:47 | 显示全部楼层
job_zhang | 2018-4-16 10:43:50 | 显示全部楼层
ttt

点评

????  详情 回复 发表于 2018-5-14 15:22
剑弑 | 2018-5-14 15:22:00 | 显示全部楼层
菜鸟一只 | 2018-11-12 14:01:43 | 显示全部楼层
谢谢,大佬分享
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则