将集合类转换成DataTable
///
/// "list">集合
///
public static DataTable ToDataTable(IList list)
...{
DataTable result = new DataTable();
if (list.Count > 0)
...{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
...{
result.Columns.Add(pi.Name, pi.PropertyType);
}
for (int i = 0; i < list.Count; i++)
...{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
...{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
///
/// 将泛型集合类转换成DataTable
///
/// "T">集合项类型
/// "list">集合
/// 数据集(表)
public static DataTable ToDataTable(IList list)
...{
return ConvertX.ToDataTable(list, null);
}
///
/// 将泛型集合类转换成DataTable
///
/// "T">集合项类型
/// "list">集合
/// "propertyName">需要返回的列的列名
/// 数据集(表)
public static DataTable ToDataTable(IList list, params string[] propertyName)
...{
List<string> propertyNameList = new List<string>();
if (propertyName != null)
propertyNameList.AddRange(propertyName);
DataTable result = new DataTable();
if (list.Count > 0)
...{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
...{
if (propertyNameList.Count == 0)
...{
result.Columns.Add(pi.Name, pi.PropertyType);
}
else
...{
if (propertyNameList.Contains(pi.Name))
result.Columns.Add(pi.Name, pi.PropertyType);
}
}
for (int i = 0; i < list.Count; i++)
...{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
...{
if (propertyNameList.Count == 0)
...{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
else
...{
if (propertyNameList.Contains(pi.Name))
...{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
}
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}