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

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

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

官方一群:

官方二群:

c#中DataTable转实体对象Model

[复制链接]
查看5160 | 回复3 | 2016-7-19 09:38:26 | 显示全部楼层 |阅读模式
每当从数据库中读取到DataTabel时,使用此方法就可以将datetable转为指定的model实体

[C#] 纯文本查看 复制代码
public static IEnumerable<T> DataTableToModels<T>(this DataTable dt) where T : class, new()
        {
            //判断datatable是否有值
            if (dt.Columns.Count < 1 || dt.Rows.Count < 1) yield return default(T);
            //获取实体类中所有公开的属性,并且筛选出在datatable中存在的列
            var propertyInfos = from propertyInfo in typeof(T).GetProperties()
                                where dt.Columns.Contains(propertyInfo.Name)
                                select propertyInfo;
            //循环设置属性
            foreach (DataRow dr in dt.Rows)//遍历dt中所有行
            {
                var result = new T();
                foreach (var p in propertyInfos)//遍历所有属性
                {
                    try
                    {
                        p.SetValue(result, dr[p.Name], null);
                    }
                    catch (System.Exception)
                    {

                        throw;
                    }
                }
                yield return result;
            }

        }

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2016-7-19 09:41:29 | 显示全部楼层
楠哥,我也写过dt转换成实体的,但是没有用到迭代。。。加上迭代性能会不会更好勒
ibcadmin | 2016-7-19 12:07:51 | 显示全部楼层
剑弑 发表于 2016-7-19 09:41
楠哥,我也写过dt转换成实体的,但是没有用到迭代。。。加上迭代性能会不会更好勒

更得劲
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2016-7-19 15:11:18 | 显示全部楼层
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则