在这篇文章中,我们将为您详细介绍C#Json转DataTable的内容。此外,我们还会涉及一些关于.NETDataTableDataSet转json代码、.net–如何处理System.Data.Da
在这篇文章中,我们将为您详细介绍C#Json转DataTable的内容。此外,我们还会涉及一些关于.NET DataTable DataSet转json代码、.net – 如何处理System.Data.DataTableExtensions.CopyToDataTable()中的缺陷、.net 手动建DataTable 获取DataTable列名 修改DataTable 列的顺序、ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)的知识,以帮助您更全面地了解这个主题。
本文目录一览:- C#Json转DataTable
- .NET DataTable DataSet转json代码
- .net – 如何处理System.Data.DataTableExtensions.CopyToDataTable()中的缺陷
- .net 手动建DataTable 获取DataTable列名 修改DataTable 列的顺序
- ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
C#Json转DataTable
/// <summary>
/// Json 字符串 转换为 DataTable数据集合
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static DataTable ToDataTableTwo(string json)
{
DataTable dataTable = new DataTable(); //实例化
DataTable result;
try
{
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
if (arrayList.Count > 0)
{
foreach (Dictionary<string, object> dictionary in arrayList)
{
if (dictionary.Keys.Count<string>() == 0)
{
result = dataTable;
return result;
}
//Columns
if (dataTable.Columns.Count == 0)
{
foreach (string current in dictionary.Keys)
{
dataTable.Columns.Add(current, dictionary[current].GetType());
}
}
//Rows
DataRow dataRow = dataTable.NewRow();
foreach (string current in dictionary.Keys)
{
dataRow[current] = dictionary[current];
}
dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
}
}
}
catch
{
}
result = dataTable;
return result;
}
public static string ToJson(this DataTable dt)
{
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
foreach (DataRow dataRow in dt.Rows)
{
Dictionary<string, object> dictionary = new Dictionary<string, object>(); //实例化一个参数集合
foreach (DataColumn dataColumn in dt.Columns)
{
dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());
}
arrayList.Add(dictionary); //ArrayList集合中添加键值
}
return javaScriptSerializer.Serialize(arrayList); //返回一个json字符串
}
.NET DataTable DataSet转json代码
/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string ToJson(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{\"");
jsonBuilder.Append(dt.TableName.ToString());
jsonBuilder.Append("\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
/// <summary>
/// DataSet转换成Json格式
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns></returns>
public static string ToJson(DataSet ds)
{
StringBuilder json = new StringBuilder();
foreach (DataTable dt in ds.Tables)
{
json.Append("{\"");
json.Append(dt.TableName);
json.Append("\":");
json.Append(ToJson(dt));
json.Append("}");
}
return json.ToString();
}
.net – 如何处理System.Data.DataTableExtensions.CopyToDataTable()中的缺陷
导入(在VB.NET中)System.Data.DataTableExtensions然后针对IEnumerable调用该方法使用此方法.如果要使用LINQ过滤数据表,然后在最后还原DataTable,则可以执行此操作.
即:
Imports System.Data.DaTarowExtensions Imports System.Data.DataTableExtensions Public Class SomeClass Private Shared Function GetData() As DataTable Dim Data As DataTable Data = LegacyADO.NETDBCall Data = Data.AsEnumerable.Where(Function(dr) dr.Field(Of Integer)("SomeField") = 5).copyToDataTable() Return Data End Function End Class
在上面的示例中,“WHERE”过滤可能不会返回任何结果.如果发生这种情况,copyToDataTable会抛出异常,因为没有DaTarows.
为什么?
正确的行为应该是返回一个Rows.Count = 0的DataTable.
任何人都可以想到一个干净的解决方法,这样调用copyToDataTable的人不必知道这个问题吗?
System.Data.DataTableExtensions是一个静态类,所以我无法覆盖行为….任何想法?我错过了什么吗?
干杯
更新:
我已将此问题提交给Connect.我仍然想要一些建议,但如果您同意我的意见,可以通过以上链接在Connect上投票
干杯
someDataTable.AsEnumerable().Where(r => r.Field<string>("SomeField") == "SomeValue").AsDataView().ToTable();
.AsDataView().ToTable()返回一个空表,其结构与someDataTable相同,如果现在有从.Where()返回的行
.net 手动建DataTable 获取DataTable列名 修改DataTable 列的顺序
//创建 表
DataTable tables = new DataTable();
//添加 创建 列
//第一列
DataColumn cums = new DataColumn();
cums.ColumnName = "UserName";
cums.DataType = typeof(string);
tables.Columns.Add(cums);
cums = new DataColumn();
cums.ColumnName = "Age";
cums.DataType = typeof(string);
tables.Columns.Add(cums);
tables.Columns.Add("Address", typeof(string)); 这种用的较多
tables.Columns["Address"].SetOrdinal(0); //修改DataTable 列的顺序
string[] columnNames = GetColumnsByDataTable(tables);
string ss = columnNames[0];
/// <summary>
/// 根据datatable获得列名
/// </summary>
/// <param name="dt">表对象</param>
/// <returns>返回结果的数据列数组</returns>
public string[] GetColumnsByDataTable(DataTable dt)
{
string[] strColumns = null;
if (dt.Columns.Count > 0)
{
int columnNum = 0;
columnNum = dt.Columns.Count;
strColumns = new string[columnNum];
for (int i = 0; i < dt.Columns.Count; i++)
{
strColumns[i] = dt.Columns[i].ColumnName;
}
}
return strColumns;
}
ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
本文转自:https://www.cnblogs.com/sntetwt/p/3496477.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
namespace Gzcms.Common
{
public
class
CreateTable
{
public
static
DataTable getTable()
{
//1.创建 datatable
DataTable dt =
new
DataTable(
"datatable"
);
//可以给表创建一个名字,datatable
//2.给表加个列名:
dt.Columns.Add(
"id"
,
typeof
(System.Int32));
//类型是可以变换的,比如System.Int32,System.Double..
dt.Columns.Add(
"title"
,
typeof
(System.String));
//3.给表加行,内容:
DataRow row = dt.NewRow();
row[
"id"
] = 1;
row[
"title"
] =
"标题1"
;
dt.Rows.Add(row);
//这样就可以添加了
row = dt.NewRow();
row[
"id"
] = 2;
row[
"title"
] =
"标题2"
;
dt.Rows.Add(row);
return
dt;
/*
//4. 过滤表内容,,查找id为1的信息
DataRow[] arr = dt.Select("id=1");//返回的是一个数组
//5.将过滤的内容插入到另一个table中
DataTable dtnew = dt.Clone();//将表dt里的列信息复制到dtnew里,不是复制数据
foreach (DataRow row in arr)
{
dtnew.Rows.Add(row);//把过滤好的信息加入到dtnew里
}
dt.AcceptChanges();//添加好后,要记得刷新一下!
//6.给表排序
dt.DefaultView.Sort = "id desc";
//7.删除数据
dt.Rows.Remove(row);//根据row行信息删除
dt.Rows.RemoveAt(index);//根据index索引删除
//8.修改dt 的列信息
row2[0].BeginEdit();
row2[0]["status"] = 0;
row2[0].EndEdit();
*/
}
}
}
|
今天关于C#Json转DataTable的讲解已经结束,谢谢您的阅读,如果想了解更多关于.NET DataTable DataSet转json代码、.net – 如何处理System.Data.DataTableExtensions.CopyToDataTable()中的缺陷、.net 手动建DataTable 获取DataTable列名 修改DataTable 列的顺序、ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)的相关知识,请在本站搜索。
本文标签: