List转换DataTable

 

    /// <summary>
    
/// 将泛类型集合List类转换成DataTable
    
/// </summary>
    
/// <param name="list">泛类型集合</param>
    
/// <returns></returns>
    public static DataTable ListToDataTable<T>(List<T> entitys)
    {
        
//检查实体集合不能为空
        if (entitys == null || entitys.Count < 1)
        {
            
throw new Exception("需转换的集合为空");
        }
        
//取出第一个实体的所有Propertie
        Type entityType = entitys[0].GetType();
        PropertyInfo[] entityProperties 
= entityType.GetProperties();

        
//生成DataTable的structure
        
//生产代码中,应将生成的DataTable结构Cache起来,此处略
        DataTable dt = new DataTable();
        
for (int i = 0; i < entityProperties.Length; i++)
        {
            
//dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
            dt.Columns.Add(entityProperties[i].Name);
        }
        
//将所有entity添加到DataTable中
        foreach (object entity in entitys)
        {
            
//检查所有的的实体都为同一类型
            if (entity.GetType() != entityType)
            {
                
throw new Exception("要转换的集合元素类型不一致");
            }
            
object[] entityValues = new object[entityProperties.Length];
            
for (int i = 0; i < entityProperties.Length; i++)
            {
                entityValues[i] 
= entityProperties[i].GetValue(entity, null);
            }
            dt.Rows.Add(entityValues);
        }
        
return dt;
    }

 

posted @ 2009-11-03 17:48  亦心  阅读(12999)  评论(0编辑  收藏  举报