Chitika

Sunday, June 24, 2012

Convert Generic Collection to Data Table in C#


public class CollectionHelper { private CollectionHelper() { } 
 // this is the method I have been using public static DataTable ConvertTo<T>(IList<T> list) { 
    DataTable table = CreateTable<T>(); 
    Type entityType = typeof(T); 
    PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType); 
 
    foreach (T item in list) 
    { 
        DataRow row = table.NewRow(); 
 
        foreach (PropertyDescriptor prop in properties) 
        { 
           row[prop.Name] = prop.GetValue(item) ?? DBNull.Value; 

       
}            table.Rows.Add(row);      }        return table; }       public static DataTable CreateTable<T>() {      Type entityType = typeof(T);      DataTable table = new DataTable(entityType.Name);      PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);        foreach (PropertyDescriptor prop in properties)      {          // HERE ERROR WILL THROW FOR NULLABLE TYPES TO AVOID THAT        
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType( 
            prop.PropertyType) ?? prop.PropertyType); 
   
}        return table; } } 

No comments:

Post a Comment