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;
    }

 

你可能感兴趣的:(Datatable)