ãã转载 æ¨æ¥å¨å·¥ä½ä¸ï¼éå°ä¸ä¸ªé®é¢ï¼éè¦å°æ¥è¯¢åºæ¥çDataTableæ°æ®æºï¼è½¬æ¢æList<T>çæ³åéåï¼å·²ç¥Tç±»åï¼ã第ä¸ååºï¼ææ³è¯å®è¦ç¨å°âæ³åâï¼è¿ä¸æ¯åºè¯åï¼é½è¯´äºè¦è½¬æ¢æList<T>æ³åéåäºï¼ï¼èä¸è¿è¦ç¨å°âåå°âç¸å
³çãåµåµãå¾å¿«ï¼æå°±ååºäºä¸ä¸ªå°å®ä¾ï¼æµè¯éè¿ãä¸é¢æå°ä»£ç è´´åºæ¥ï¼å享ç»å¤§å®¶ã代ç é½æ详ç»ç注éï¼è¯»è
æåå¯ä»¥å¾æ¸
æ°ççææçæè·¯ã
ããé¦å
ï¼è¿æ¯æåçä¸ä¸ªéç¨è½¬æ¢ç±»ï¼å®ææ¤ç±»æä½ãä¹æ¯å®ç°è¿ä¸ªåè½ææ ¸å¿çé¨åï¼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;
using System.Reflection;
namespace DatableToList
{
class ConvertHelper<T> where T : new()
{
/// <summary>
/// å©ç¨åå°åæ³å
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static List<T> ConvertToList(DataTable dt)
{
// å®ä¹éå
List<T> ts = new List<T>();
// è·å¾æ¤æ¨¡åçç±»å
Type type = typeof(T);
//å®ä¹ä¸ä¸ªä¸´æ¶åé
string tempName = string.Empty;
//éåDataTableä¸ææçæ°æ®è¡
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// è·å¾æ¤æ¨¡åçå
Œ
±å±æ§
PropertyInfo[] propertys = t.GetType().GetProperties();
//éå该对象çææå±æ§
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name;//å°å±æ§å称èµå¼ç»ä¸´æ¶åé
//æ£æ¥DataTableæ¯å¦å
å«æ¤åï¼åå==对象çå±æ§åï¼
if (dt.Columns.Contains(tempName))
{
// å¤ææ¤å±æ§æ¯å¦æSetter
if (!pi.CanWrite) continue;//该å±æ§ä¸å¯åï¼ç´æ¥è·³åº
//åå¼
object value = dr[tempName];
//å¦æé空ï¼åèµç»å¯¹è±¡çå±æ§
if (value != DBNull.Value)
pi.SetValue(t, value, null);
}
}
//对象添å å°æ³åéåä¸
ts.Add(t);
}
return ts;
}
}
}