2021-12-01

public static List<T> ToList<T>(this DataTable dt) where T : class, new()
    {
        //創(chuàng)建一個屬性的列表  
        var prlist = new List<PropertyInfo>();

        //獲取TResult的類型實例  反射的入口  
        Type t = typeof(T);

        //獲得TResult 的所有的Public 屬性 并找出TResult屬性和DataTable的列名稱相同的屬性(PropertyInfo) 并加入到屬性列表   
        Array.ForEach<PropertyInfo>(t.GetProperties(), p =>
        {
            if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p);
        });

        //創(chuàng)建返回的集合  
        var oblist = new List<T>();

        foreach (DataRow row in dt.Rows)
        {
            //創(chuàng)建TResult的實例  
            var ob = new T();
            //到對應(yīng)的數(shù)據(jù)  并賦值  
            prlist.ForEach(p =>
            {
                if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null);

            });
            //放入到返回的集合中.  
            oblist.Add(ob);
        }
        return oblist;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容