LINQ返回DataTable类型 list转dataset 转换为JSON对象
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Reflection;
using System.Data;
using System; namespace CommonCode
{
public class Common
{
/// <summary>
/// LINQ返回DataTable类型
/// </summary>
public static DataTable ToDataTable<T>(IEnumerable<T> varlist)
{
DataTable dtReturn = new DataTable();
// column names
PropertyInfo[] oProps = null; if (varlist == null)
return dtReturn;
foreach (T rec in varlist)
{
if (oProps == null)
{
oProps = ((Type)rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[];
}
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
}
DataRow dr = dtReturn.NewRow();
foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
}
dtReturn.Rows.Add(dr);
}
return dtReturn;
} /// <summary>
/// list转dataset
/// </summary>
public static DataSet ConvertToDataSet<T>(IList<T> list)
{
if (list == null || list.Count <= )
return null;
DataSet ds = new DataSet();
DataTable dt = new DataTable(typeof(T).Name);
DataColumn column;
DataRow row;
System.Reflection.PropertyInfo[] myPropertyInfo =
typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (T t in list)
{
if (t == null) continue;
row = dt.NewRow(); for (int i = , j = myPropertyInfo.Length; i < j; i++)
{
System.Reflection.PropertyInfo pi = myPropertyInfo[i];
String name = pi.Name; if (dt.Columns[name] == null)
{
if (pi.PropertyType.UnderlyingSystemType.ToString() == "System.Nullable`1[System.Int32]")
{
column = new DataColumn(name, typeof(Int32));
dt.Columns.Add(column);
//row[name] = pi.GetValue(t, new object[] {i});//PropertyInfo.GetValue(object,object[])
if (pi.GetValue(t, null) != null)
row[name] = pi.GetValue(t, null);
else
row[name] = System.DBNull.Value;
}
else if (pi.PropertyType.UnderlyingSystemType.ToString() == "System.Nullable`1[System.DateTime]")
{
column = new DataColumn(name, typeof(DateTime));
dt.Columns.Add(column);
if (pi.GetValue(t, null) != null)
row[name] = pi.GetValue(t, null);
else
row[name] = System.DBNull.Value;
}
else
{
column = new DataColumn(name, pi.PropertyType);
dt.Columns.Add(column);
row[name] = pi.GetValue(t, null);
}
}
}
dt.Rows.Add(row);
}
ds.Tables.Add(dt);
return ds;
}
public delegate object[] CreateRowDelegate<T>(T t); public static string Serialize(DataTable dt)
{
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc].ToString());
}
list.Add(result);
}
int count = ;
try
{
count = Convert.ToInt32(dt.TableName);
}
catch (System.Exception ex)
{
count = dt.Rows.Count;
}
string strReturn = "";
if (count == )
{
strReturn = "{\"totalCount\":0,\"data\":[]}";
}
else
{
strReturn = ConventToJson(list, count);
}
return strReturn;
} /// <summary>
/// 转换为JSON对象
/// </summary>
public static string ConventToJson<T>(List<T> list, int count)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string strJson = serializer.Serialize(list);
strJson = strJson.Substring();
strJson = strJson.Insert(, "{totalCount:" + count + ",data:[");
strJson += "}";
return strJson;
} /// <summary>
/// 不需要分页
/// </summary>
public static string Serialize(DataTable dt, bool flag)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
result.Add(dc.ColumnName, dr[dc].ToString());
}
list.Add(result);
}
return serializer.Serialize(list);
}
}
}
LINQ返回DataTable类型 list转dataset 转换为JSON对象的更多相关文章
- LINQ查询返回DataTable类型[轉]與将DataTable序列化为Json格式【轉】
(原文地址:http://xuzhihong1987.blog.163.com/blog/static/26731587201101853740294/) LINQ查询返回DataTable类型 在使 ...
- LINQ查询返回DataTable类型
个人感觉Linq实用灵活性很大,参考一篇大牛的文章LINQ查询返回DataTable类型 http://xuzhihong1987.blog.163.com/blog/static/267315872 ...
- 转:LINQ查询返回DataTable类型
动态绑定ReportViewer虽然之前实现过,但现在弄起来还是有点晕,主要是过去没有使用Linq,数据的操作经常用到DataTable,可以直接拿来使用,现在用Linq更方便,也懒得再用之前的数据库 ...
- 匿名类型 使用泛型T linq返回dynamic类型的匿名实体 如何把匿名类型.GetType()返回的对象传进泛型里面 EF实体查询出的数据List<T>转DataTable出现【DataSet 不支持 System.Nullable<>】的问题
[100分]紧急求助:LinQ下使用IQueryable<T>如何将返回类型<T>使用匿名类型 问题描述如下:我有一个方法如下:public IQueryable Dissen ...
- Asp.net 将DataTable 或者DataSet 转换为Json 格式
Web 开发中,将从数据库中取到的数据直接转换为 Json 格式的数据,在前台通过Ajax 无刷新显示在界面上,下面提供将DataTable 或者DataSet 转换为Json 的方法 /// < ...
- c# DataSet转换为Json
/// <summary> /// DataSet转换为Json /// </summary> /// <param name="dataSet"&g ...
- 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- Js中把JSON字符串转换为JSON对象(eval()、new Function())
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- 将XML文件中的内容转换为Json对象
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;u ...
随机推荐
- bzoj2734【HNOI2012】集合选数
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 831 Solved: 487 [Submit][Stat ...
- swift -函数、函数指针
// // main.swift // FunctionTest-04 // import Foundation println("函数測试!") testFunction() / ...
- [Android] Android开发优化之——对界面UI的优化(1)
在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的.界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局.通常,在这个页面中会用到很多 ...
- phpstorm 或 webstorm 设置打开多个项目,多个项目并存。
File -> settings -> Directories -> Add Content Root 中添加你当前的工程目录. 这样就可以节省内存了.之前用一个打开php项目,一个 ...
- CoreData的介绍和使用
一.CoreData是什么? CoreData是iOS SDK里的一个很强大的框架,允许程序员以面向对象的方式存储和管理数据.使用CoreData框架,程序员可以轻松有效地通过面向对象的接口管理数据 ...
- Linux就该这么学 20181004(第五章用户权限)
参考链接https://www.linuxprobe.com/ Linux是一个多用户.多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全的则是一系列复杂的配置工作.本章将 详细 ...
- POJ 2481 Cows【树状数组】
题意:给出n头牛的s,e 如果有两头牛,现在si <= sj && ei >= ej 那么称牛i比牛j强壮 然后问每头牛都有几头牛比它强壮 先按照s从小到大排序,然后用e来 ...
- 一个php处理图片裁剪,压缩,水印的小代码
插件地址:https://github.com/cigua/imagefilter
- 洛谷 P4932 浏览器 (思维题)
题目大意:给你一个序列,求满足$x_{i}\: xor\; x_{j}$在二进制下1的数量为奇数的数对数量 打月赛的时候真没想出来,还是我太弱.. xor意义下,对于两个数,假设它们两个每一位都是2个 ...
- springboot ajax返回html
因为拦截器 或者是 shiro 拦截登陆接口