把DataTable转换为泛型List<T>或是JSON

原文:把DataTable转换为泛型List<T>或是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

时间: 2024-10-25 08:05:42

把DataTable转换为泛型List<T>或是JSON的相关文章

[工具类]DataTable与泛型集合List互转

写在前面 工作中经常遇到datatable与list,对于datatable而言操作起来不太方便.所以有的时候还是非常希望通过泛型集合来进行操作的.所以这里就封装了一个扩展类.也方便使用. 类 方法中主要使用了反射的方式动态的为属性赋值以及取值. public static class Extension { /// <summary> /// 将datatable转换为泛型集合 /// </summary> /// <typeparam name="TEntity

将json字符串中数组节点转换为泛型list集合(gson)

开发中需要将json中节点单独取出某个节点,解析获取数据,此处对json字符串节点中数组节点,转换为泛型list集合,使用gson. google的gson的pom文件和jar:gson 代码如下: package my.demo.java.z.generic; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import com.google.gson

C#中DataTable 转换为 Json的方法汇总(三种方法)_C#教程

在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数据格式就是Json.鉴于此,我今天来分享将DataTable 转换成 Json的3种方法.换句话说如何在ASP.NET将一个DataTable序列化为 Json数组.或者如何从一个DataTable返回一个Json字符串.这篇文章将采用StringBuilder,JavaScriptSeri

c#中利用委托反射将DataTable转换为实体集的代码_C#教程

类泛型的约束: 复制代码 代码如下: public static class ToModel<T> where T : class, new() 定义委托: 复制代码 代码如下: public delegate void SetString(string value); 创建委托方法: 复制代码 代码如下: private static SetString CreateStringDelegate(T model, string propertyName) { MethodInfo mi =

将java类的泛型集合转换成json对象

一般用extjs开发传输都是用json比较多,这个将来大家也许会用到... ConvertJsonUtils.java package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfactory.jsontools.JSONArray;import com.sunweb.util.jsonfactory.jsontools.JSONException;import com.sunwe

将 DataTable 或 String 数据转化为json(.NET)

直接贴代码:   1 using System; 2 using System.Data; 3 using System.Text; 4 using System.Collections.Generic; 5 using System.Reflection; 6 7 namespace PowerCheck.Tools 8 { 9 10 public class ToJson 11 { 12 public ToJson() 13 { 14 15 } 16 public static string

ASP.NET 把DataTable与Lis&lt;T&gt;转成json输出

//DataTable转成Json public static string DataTableToJson(string jsonName, DataTable dt) { StringBuilder Json = new StringBuilder(); Json.Append("{\"" + jsonName + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.R

C#.NET下转换泛型列表为JSON格式

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.Data; using System.Data.Common; using System.Collections; using System.Reflection; namespace LearningAspNet.JSON示例 { public class jso

【项目经验】DataTable与JSON之间的转换

[项目需求]     问卷调查的制作学生端已经完成了,下一步要做的便是后台对问卷结果的管理.通过和老师的沟通,了 解到老师想要的结果是按专业查询的结果,而其中包括两门课程.所以,接下来的工作便很明确了. [项目设计]     对问卷结果的回收内容明确之后,第一项工作便是页面的设计.如下:     在导航栏新增对此次问卷调查的菜单,其下包括三个子菜单,也就是本次问卷包含的三种题型,分开查询.每个页面,通过课程与专业的选择,进行问卷结果的查询. [项目开发]     本次项目开发的具体步骤不一一写下