DataTable是C#语言中一个独特而又强大的数据类型。若想了解更多,请自行百度去吧...
下面提供一下List集合数据类型与DataTable表格数据类型的相互转换。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace JR_Common
{
/// <summary>
/// List与DataTable相互转换的工具类
/// </summary>
public class ListTable
{
/// <summary>
/// DataTable对象转换成List<T>对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="table"></param>
/// <returns></returns>
public static List<T> DataTableToList<T>(DataTable table)
{
if (table == null)
{
return null;
}
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}
List<T> list = null;
if (rows != null)
{
list = new List<T>();
foreach (DataRow row in rows)
{
T item = DataRowToObject<T>(row);
list.Add(item);
}
}
return list;
}
private static List<T> ConvertTo<T>(List<DataRow> rows)
{
List<T> list = null;
if (rows != null)
{
list = new List<T>();
foreach (DataRow row in rows)
{
T item = DataRowToObject<T>(row);
list.Add(item);
}
}
return list;
}
/// <summary>
/// DataRow对象转换成Object<T>对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="row"></param>
/// <returns></returns>
public static T DataRowToObject<T>(DataRow row)
{
T obj = default(T);
if (row != null)
{
obj = Activator.CreateInstance<T>();
foreach (DataColumn column in row.Table.Columns)
{
PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName);
try
{
object value = row[column.ColumnName];
prop.SetValue(obj, value);
}
catch (Exception ex)
{
throw ex;
}
}
}
return obj;
}
/// <summary>
/// List<T>对象转换成DataTable对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="collection"></param>
/// <returns></returns>
public static DataTable ListToDataTable<T>(List<T> collection)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
}
}
}
希望给你带来帮助!!!谢谢大家。