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;
        }
    }
}

 

 

總結一下:

其實我想重寫下Ado.net ,因為之前我們公司用的都是直接dataset to datatable ,現在發現 to list更方便(不知道大家有沒有這種感覺),

我自己用的是Nhibernate,所以基於公司內部的話,我想再寫個Ado.net 轉換數據的dll,最后我想說的是,大家在公司里都是用什么開發的?

ado.net?nhibernate?Elinq?entityframework?希望大家一起討論討論!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM