复制代码 代码如下:
public static class DataTableHelper
{
public static DataTable ConvertTo
{
DataTable table = CreateTable
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);
table.Rows.Add(row);
}
return table;
}
public static IList
{
IList
if (rows != null)
{
list = new List
foreach (DataRow row in rows)
{
T item = CreateItem
list.Add(item);
}
}
return list;
}
public static IList
{
if (table == null)
return null;
List
foreach (DataRow row in table.Rows)
rows.Add(row);
return ConvertTo
}
//Convert DataRow into T Object
public static T CreateItem
{
string columnName;
T obj = default(T);
if (row != null)
{
obj = Activator.CreateInstance
foreach (DataColumn column in row.Table.Columns)
{
columnName = column.ColumnName;
//Get property with same columnName
PropertyInfo prop = obj.GetType().GetProperty(columnName);
try
{
//Get value for the column
object value = (row[columnName].GetType() == typeof(DBNull))
? null : row[columnName];
//Set property value
if (prop.CanWrite) //判断其是否可写
prop.SetValue(obj, value, null);
}
catch
{
throw;
//Catch whatever here
}
}
}
return obj;
}
public static DataTable CreateTable
{
Type entityType = typeof(T);
DataTable table = new DataTable(entityType.Name);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, prop.PropertyType);
return table;
}
}



