把DataTable直接转换为IList

/// <summary>
        
/// DataTable 转换为List 集合
        
/// </summary>
        
/// <typeparam name="TResult">类型</typeparam>
        
/// <param name="dt">DataTable</param>
        
/// <returns></returns>
        public static List<TResult> ToList<TResult>(this DataTable dt) where TResult : classnew()
        {
            
//创建一个属性的列表
            var prlist = new List<PropertyInfo>();
            
//获取TResult的类型实例  反射的入口
            Type 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;
        }

posted on 2010-11-23 16:52 aiaiwoo 阅读(413) 评论(0)  编辑  收藏 所属分类: ASP.NET


只有注册用户登录后才能发表评论。


网站导航:
 
<2021年4月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿

随笔分类

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜