手机
当前位置:查字典教程网 >编程开发 >C#教程 >DataTables List互相转换的实现类示例
DataTables List互相转换的实现类示例
摘要:复制代码代码如下:publicstaticclassDataTableHelper{publicstaticDataTableConvert...

复制代码 代码如下:

public static class DataTableHelper

{

public static DataTable ConvertTo<T>(IList<T> list)

{

DataTable table = CreateTable<T>();

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<T> ConvertTo<T>(IList<DataRow> rows)

{

IList<T> list = null;

if (rows != null)

{

list = new List<T>();

foreach (DataRow row in rows)

{

T item = CreateItem<T>(row);

list.Add(item);

}

}

return list;

}

public static IList<T> ConvertTo<T>(DataTable table)

{

if (table == null)

return null;

List<DataRow> rows = new List<DataRow>();

foreach (DataRow row in table.Rows)

rows.Add(row);

return ConvertTo<T>(rows);

}

//Convert DataRow into T Object

public static T CreateItem<T>(DataRow row)

{

string columnName;

T obj = default(T);

if (row != null)

{

obj = Activator.CreateInstance<T>();

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<T>()

{

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;

}

}

【DataTables List互相转换的实现类示例】相关文章:

C#.net中的类型转换详细介绍

将DataTable转换成List&lt;T&gt;实现思路及示例代码

C# zxing二维码写入的实例代码

关于c#二叉树的实现

C#读取XML中元素和属性值的实现代码

两路归并的数组与链表的实现方法

c#中利用委托反射将DataTable转换为实体集的代码

C#操作EXCEL DataTable转换的实例代码

C#连接db2数据库的实现方法

C# 图片与二进制转换的简单实例

精品推荐
分类导航