c#的datatable轉list示例。本站提示廣大學習愛好者:(c#的datatable轉list示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c#的datatable轉list示例正文
using System;
using System.Collections.Generic;
using System.Data;
using System.Reflection;
namespace jdrz.HumanIdentify
{
public class Helper
{
/// <summary>
/// DataTable 轉換為List 聚集
/// </summary>
/// <typeparam name="TResult">類型</typeparam>
/// <param name="dt">DataTable</param>
/// <returns></returns>
public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new()
{
//創立一個屬性的列表
var prlist = new List<PropertyInfo>();
//獲得TResult的類型實例 反射的進口
var t = typeof(TResult);
//取得TResult 的一切的Public 屬性 並找出TResult屬性和DataTable的列稱號雷同的屬性(PropertyInfo) 並參加到屬性列表
Array.ForEach(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); });
//創立前往的聚集
var oblist = new List<TResult>();
foreach (DataRow row in dt.Rows)
{
//創立TResult的實例
var ob = new TResult();
//找到對應的數據 並賦值
prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); });
//放入到前往的聚集中.
oblist.Add(ob);
}
return oblist;
}
}
}