简单的Datatable转List,Json
这里用到了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的更多相关文章
- LINQ查询返回DataTable类型[轉]與将DataTable序列化为Json格式【轉】
(原文地址:http://xuzhihong1987.blog.163.com/blog/static/26731587201101853740294/) LINQ查询返回DataTable类型 在使 ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- Datatable/Dataset 转 JSON方法
当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...
- DataTable转换成json字符串
将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...
- 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)
public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...
- 将DataTable格式化为json字符串返回
一般用于ajax局部刷新的使用比较多,通过查询得到了DataTable数据,要想将数据放回需要将DataTable转换为json格式,以下为转换的调用函数: string json = "& ...
- ASP.NET 将DataTable解析成JSON简介
这里解析json使用的是Newtonsoft.Json.dll程序集.下面请看code: using System; using System.Collections.Generic; using S ...
- Datatable转成Json方式两则
1, Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据 1.这里下载:http://www.newtonsoft.com/products/json/ ...
- .NET DataTable转化为json格式
标准的json用“分隔,不用' public static string DataSetToJson(DataTable dt) { string json = string.Empty ...
随机推荐
- Visual Studio 扩展包(.vsix)制作
前言:上篇介绍了 Visual Studio扩展工具添加与卸载,本编要介绍的是Visual Studio 扩展包(.vsix)的制作. 方法: ①.下载并安装Visual Studio 2010 SD ...
- Linux的SOCKET编程详解
1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 U ...
- Shell学习笔记 - 正则表达式
一.正则表达式是什么? 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作. 二.正则表达式与通配符 1. 正则表达式 用来在文件中匹配符合条件的字 ...
- codeforces 675A A. Infinite Sequence(水题)
题目链接: A. Infinite Sequence time limit per test 1 second memory limit per test 256 megabytes input st ...
- hdu 1530 最大团模板
说明摘自:pushing my way 的博文 最大团 通过该博主的代码,总算理解了最大团问题,但是他实现时的代码效率却不算太高.因此在最后献上我的模板.加了IO优化目前的排名是: 6 yejinru ...
- kettle菜鸟学习笔记3----kettle数据库连接错误及解决
数据库连接测试时,所有的参数信息都填写正确,却报错了. 或者,没有进行数据库连接测试,直接保存了当前数据库连接,然后在浏览,选择目标表时报错: 或者其他别的关于数据库连接的错误…… 第一个要考虑的就是 ...
- iOS UIView简单缩放动画
@interface ViewController () { UIView *animationView; UIButton *button; CGPoint animationPoint; } @e ...
- Part 30 to 31 Talking about Interfaces in c#
Part 30 Interfaces in c# We create interfaces using interface keyword. just like classes interfaces ...
- 研究validation插件到现在的感受
1.比较累 2.看了几十个页面参考是有的,要抓住问题的实质,实质在于要改插件代码.因为它本身不提供这个方法. 3.对了,还没有描述这个问题,问题就是再次验证时,成功的样式不消失.解决方法如下: 修改了 ...
- 快速调试chromium
上一篇我们简单的将了在Ubuntu上编译chromium,android content_shell_apk的编译,一切顺利的就能生成apk.但是我们仅仅只是照搬了人家google开源的东西,作为一个 ...