/// <summary>
/// DataTable 转化为 IList<>
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="table">数据表DataTable</param>
/// <returns>IList<></returns>
public static IList<T> ConvertTo<T>(DataTable table)
{
if (table == null && table.Rows.Count > 0)
return null;
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}
return ConvertTo<T>(rows);
}
/// <summary>
/// IList<DataRow> 转 IList<T>
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="rows">数据集合</param>
/// <returns>IList<T></returns>
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;
}
/// <summary>
/// DataRow一行数据转model
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="row">数据行</param>
/// <returns>泛型</returns>
public static T CreateItem<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, null);
}
catch
{ //You can log something here
//throw;
}
}
}
return obj;
}
/// <summary>
/// IList转化List
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="list">IList</param>
/// <returns>List</returns>
public static List<T> IListToList<T>(IList<T> list)
{
if (list == null || list.Count <= 0)
return null;
T[] array = new T[list.Count];
list.CopyTo(array, 0);
return new List<T>(array);
}
C# DataTable转化为 IList IList<DataRow> 转化为 IList<T> DataRow转化为model IList转化List
最新推荐文章于 2024-03-07 16:36:39 发布