Translate

Wednesday, March 25, 2015

Utillities

public static DataTable ToDataTable(List items)
{
var dt = new DataTable(typeof (T).Name);
PropertyInfo[] props = typeof (T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in props)
{
dt.Columns.Add(prop.Name, BaseType(prop.PropertyType));
}
foreach (var item in items)
{
try
{
var values = new object[props.Length];
for (var i = 0; i < props.Length; i++)
{
values[i] = props[i].GetValue(item, null);
}
dt.Rows.Add(values);
}
catch (Exception)
{   
}
}
return dt;
}

public static Type BaseType(Type oType)
{
if (oType != null && oType.IsValueType && oType.IsGenericType &&
oType.GetGenericTypeDefinition() == typeof (Nullable<>))
{
return Nullable.GetUnderlyingType(oType);
}
else
{
return oType;
}
}