手机
当前位置:查字典教程网 >编程开发 >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# 泛型类(函数)的实例化小例子

c# 控件截图的简单实例

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

c#中Linq to Sql 增删除的实例

C#调用Java类的实现方法

遍历Hashtable 的几种方法

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

c#简单读取文本的实例方法

.net使用Aspose.Words进行Word替换操作的实现代码

C# 将字节流转换为图片的实例方法

精品推荐
分类导航