当前位置: 移动技术网 > IT编程>开发语言>c# > c#的datatable转list示例

c#的datatable转list示例

2019年07月18日  | 移动技术网IT编程  | 我要评论

复制代码 代码如下:

using system;
using system.collections.generic;
using system.data;
using system.reflection;

namespace jdrz.humanidentify
{
    public class helper
    {
        /// <summary>
        /// datatable 转换为list 集合
        /// </summary>
        /// <typeparam name="tresult">类型</typeparam>
        /// <param name="dt">datatable</param>
        /// <returns></returns>
        public static list<tresult> tolist<tresult>(datatable dt) where tresult : class, new()
        {
            //创建一个属性的列表
            var prlist = new list<propertyinfo>();
            //获取tresult的类型实例  反射的入口
            var t = typeof(tresult);
            //获得tresult 的所有的public 属性 并找出tresult属性和datatable的列名称相同的属性(propertyinfo) 并加入到属性列表
            array.foreach(t.getproperties(), p => { if (dt.columns.indexof(p.name) != -1) prlist.add(p); });
            //创建返回的集合
            var oblist = new list<tresult>();

            foreach (datarow row in dt.rows)
            {
                //创建tresult的实例
                var ob = new tresult();
                //找到对应的数据  并赋值
                prlist.foreach(p => { if (row[p.name] != dbnull.value) p.setvalue(ob, row[p.name], null); });
                //放入到返回的集合中.
                oblist.add(ob);
            }
            return oblist;
        }
    }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网