Monday, August 29, 2005

Converting Class Array to DataTable

//Variable Declarations
private DataTable dtTemp;

private static void FillData(PropertyInfo[] properties, DataTable dt, Object o)
{
DataRow dr = dt.NewRow();
foreach(PropertyInfo pi in properties)
dr[pi.Name] = pi.GetValue(o, null);
dt.Rows.Add(dr);
}

//All the Properties for the class array are converted to columns. We can always add a
//condition to include required columns alone.
private static DataTable CreateDataTable(PropertyInfo[] properties)
{
DataTable dt = new DataTable();
DataColumn dc = null;
foreach(PropertyInfo pi in properties)
{
dc = new DataColumn();
dc.ColumnName = pi.Name;
dc.DataType = pi.PropertyType;

dt.Columns.Add(dc);
}
return dt;
}

public static DataTable ConvertToDataTable(Object[] array)
{
PropertyInfo[] properties = array.GetType().GetElementType().GetProperties();
DataTable dt = CreateDataTable(properties);
if (array.Length != 0)
{
foreach(object o in array)
FillData(properties, dt, o);
}
return dt;
}

//Call like this
//Convert the Class Object Array to DataTable
dtTemp = ConvertToDataTable(clsData);

This page is powered by Blogger. Isn't yours?