为具有相同结构和不同列数的类创建扩展方法
本文关键字:创建 方法 扩展 结构 | 更新日期: 2023-09-27 18:24:32
我有一个实体框架数据模式,我在其中插入一些存储过程,并为每个SP创建一个复杂类型。例如,我的sp1有一个复杂的类型:
sp1_result
{
string c1;
string c2;
string c3;
string c4;
}
例如,sp2具有这种复杂类型:
sp2_result
{
string c1;
string c2;
}
等等。我想把这个复杂结果的List转换成DataTable
,但它们有不同的列数,但它们的类型是相等的。我该如何为此编写Extension Method
?
感谢
它们利用反射并从对象的List
集合创建DataTable
。。。
/// <summary>
/// Converts IList object to Datatable
/// </summary>
/// <typeparam name="T"> name of the class - List Type</typeparam>
/// <param name="pList"> IList object</param>
/// <returns>Datatable</returns>
public static DataTable ConvertTo<T>(IList<T> pList)
{
DataTable table = CreateTable<T>();
Type entityType = typeof(T);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (T item in pList)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
{
row[prop.Name] = prop.GetValue(item);
}
table.Rows.Add(row);
}
return table;
}