把DataTable轉換為泛型List 或是JSON


在開發ASP.NET Web API或ASP.NET MVC時,我們從數據庫得到的數據往往是DataSet或是DataTable。為了能讓前端JQuery能方便使用至這些數據,我們需要把這些數據轉換為泛型List<T>或是JSON。

Insus.NET有把這個轉換功能寫成一個擴展方法:


方法源代碼:

 public static List<T> ToList<T>(this DataTable dt)
        {
            var columnNames = dt.Columns.Cast<DataColumn>()
                .Select(c => c.ColumnName)
                .ToList();

            var properties = typeof(T).GetProperties();

            return dt.AsEnumerable().Select(row =>
            {
                var objT = Activator.CreateInstance<T>();

                foreach (var pro in properties)
                {
                    if (columnNames.Contains(pro.Name))
                        pro.SetValue(objT, row[pro.Name] == DBNull.Value ? string.Empty : row[pro.Name].ToString(), null);
                }

                return objT;
            }).ToList();
        }
View Code

 

把DataTable轉換為JSON:

 

方法源代碼:

 public static string ToJson(this DataTable table)
        {
            List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();

            foreach (DataRow row in table.Rows)
            {
                Dictionary<string, object> dict = new Dictionary<string, object>();

                foreach (DataColumn col in table.Columns)
                {
                    dict[col.ColumnName] = row[col];
                }
                list.Add(dict);
            }
                        
            return serializer.Serialize(list);
        }
View Code

 

實例應用,可以從下面這篇可以參考:《創建與使用Web APIhttp://www.cnblogs.com/insus/p/5019088.html


免責聲明!

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



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