2021-12-01

public static List<T> ToList<T>(this DataTable dt) where T : class, new()
    {
        //创建一个属性的列表  
        var prlist = new List<PropertyInfo>();

        //获取TResult的类型实例  反射的入口  
        Type t = typeof(T);

        //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表   
        Array.ForEach<PropertyInfo>(t.GetProperties(), p =>
        {
            if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p);
        });

        //创建返回的集合  
        var oblist = new List<T>();

        foreach (DataRow row in dt.Rows)
        {
            //创建TResult的实例  
            var ob = new T();
            //到对应的数据  并赋值  
            prlist.ForEach(p =>
            {
                if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null);

            });
            //放入到返回的集合中.  
            oblist.Add(ob);
        }
        return oblist;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容