这里用到了Newtonsoft.Json,下载地址:http://json.codeplex.com/

1.根据不同的Model转为对应的List

 public static List<Model> ToList<Model>(this DataTable dt) where Model: class,new()
{ //创建一个属性的列表
List<PropertyInfo> prlist = new List<PropertyInfo>();
//获取Model的类型实例 反射的入口
Type t = typeof(Model);
//获得Model的所有的Public 属性 并找出Model属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表
Array.ForEach<PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -) prlist.Add(p); });
//创建返回的集合
List<Model> oblist = new List<Model>();
foreach (DataRow row in dt.Rows)
{
//创建Model的实例
var Modelob = new Model();
//找到对应的数据,并赋值
prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(Modelob, row[p.Name], null); });
//放入到返回的集合中.
oblist.Add(Modelob);
}
return oblist;
}

2.直接转为List<Hashtable>

把一些没有特定列的DataTable转为List<Hashtable>,一来方便使用到List<T>的功能,进行相关操作。二来,可以直接用MVC提供的Json()转为JsonResult。

 public List<Hashtable> GetList(DataTable dt)
{
List<Hashtable> mList = new List<Hashtable>();
int count = dt.Rows.Count;
if (count > )
{
for (int i = ; i <= count-; i++)
{
Hashtable ht = new Hashtable();
foreach (DataColumn col in dt.Columns)
{
ht.Add(col.ColumnName, dt.Rows[i][col.ColumnName]);
}
mList.Add(ht);
}
}
return mList;
}

3.DataTable转Json

//方法一:先转List,在转Json,可以附带上分页
public string DtToJson( DataTable dt , int page, int rows)
{
string json = string.Empty;
IList<Hashtable> mList = new List<Hashtable>();
int count = dt.Rows.Count;
int pageCount = (page + rows) > count ? count : (page + rows);
if (pageCount > )
{
for (int i = page; i <= pageCount - ; i++)
{
Hashtable ht = new Hashtable();
foreach (DataColumn col in dt.Columns)
{
ht.Add(col.ColumnName, dt.Rows[i][col.ColumnName]);
}
mList.Add(ht);
}
json = JsonConvert.SerializeObject(new {total=count,rows= mList });
}
return json;
}
//方法二:非常简单,直接datatable转Json,但需要比较新版本的Newtonsoft.Json.dll
using Newtonsoft.Json;
using Newtonsoft.Json.Converters; public string DtToJson(DataTable dt)
{
result=JsonConvert.SerializeObject(dt, new DataTableConverter());
return result;
}
//方法三:转为List用mvc提供的Json转为Jsonresult
public ActionResult Select(int page, int rows)
{
var UserList=GetList(SelectUserTable());
var List = UserList.Skip((page - ) * rows).Take(rows);
int length = UserList.Count();
var result = Json(new { total = length.ToString(), rows = List });
result.ContentType = "text/html";
return result;
}

简单的Datatable转List,Json的更多相关文章

  1. LINQ查询返回DataTable类型[轉]與将DataTable序列化为Json格式【轉】

    (原文地址:http://xuzhihong1987.blog.163.com/blog/static/26731587201101853740294/) LINQ查询返回DataTable类型 在使 ...

  2. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  3. asp.net dataTable转换成Json格式

    /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...

  4. Datatable/Dataset 转 JSON方法

    当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...

  5. DataTable转换成json字符串

    将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...

  6. 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)

    public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...

  7. 将DataTable格式化为json字符串返回

    一般用于ajax局部刷新的使用比较多,通过查询得到了DataTable数据,要想将数据放回需要将DataTable转换为json格式,以下为转换的调用函数: string json = "& ...

  8. ASP.NET 将DataTable解析成JSON简介

    这里解析json使用的是Newtonsoft.Json.dll程序集.下面请看code: using System; using System.Collections.Generic; using S ...

  9. Datatable转成Json方式两则

    1, Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据 1.这里下载:http://www.newtonsoft.com/products/json/ ...

  10. .NET DataTable转化为json格式

    标准的json用“分隔,不用' public static string DataSetToJson(DataTable dt) {        string json = string.Empty ...

随机推荐

  1. 整合iis+tomcat

    目的: 将 Tomcat与 IIS整合在一起,共用 80端口.让 iis可以解析 *.asp. *.aspx. *.jsp. servlet和 *.do文件: 第一步:准备工作. 在你的 Tomcat ...

  2. 【转】ViewGroup的onMeasure和onLayout分析

    ViewGroup的onMeasure和onLayout分析 一个Viewgroup基本的继承类格式如下: 1 import android.content.Context; 2 import and ...

  3. 《算法导论》习题解答 Chapter 22.1-3(转置图)

    一.邻接表实现 思路:一边遍历,一边倒置边,并添加到新的图中 邻接表实现伪代码: for each u 属于 Vertex for v 属于 Adj[u] Adj1[v].insert(u); 复杂度 ...

  4. Spring Data:企业级Java的现代数据访问技术(影印版)

    <Spring Data:企业级Java的现代数据访问技术(影印版)>基本信息原书名:Spring Data:Modern Data Access for Enterprise Java作 ...

  5. springmvc(3)--数据类型转换

    springmvc 配置 中conversionService可以配置类型转换,springmvc 参数绑定 中各种绑定方式和注解就是使用的这些转换器 一.先看下spring提供的内建类型转换器 第一 ...

  6. Java为什么只能单继承?

    就是因为C++里多重继承功能强大但是容易出错,Java才给取消掉了.如果,A和B都继承于C,再写个D继承A和B.那么C里面有个方法,A和B继承过去后都进行了覆盖,那么D到底是该继承A里面的版本呢还是B ...

  7. 借助linq2db使用Linq访问MySQL

    linq2db (@github)支持Linq访问多种数据库.使用它操作MySQL非常简单,但使用方式上有一些“新奇”,特记录一下. 下载安装(@NuGet)以及使用教程(@For MySQL). 使 ...

  8. hdu 3062 2-SAT问题

    思路:裸的2-SAT. #include<map> #include<set> #include<cmath> #include<queue> #inc ...

  9. 添加iPhone设备的udid之后,重新生成开发证书(Development)

    选择Provisioning profiles-Development-添加 ,如图:

  10. Javascript中二级联动

    主要使用到到了地址JSON格式,来做,没有涉及数据库的读取. <!DOCTYPE html><html><head> <meta charset=" ...