返回WebMethod中DataSet的关联数组

本文关键字:关联 数组 DataSet WebMethod 返回 | 更新日期: 2023-09-27 17:54:28

我使用<ScriptMethod(ResponseFormat:=ResponseFormat.Json)>自动将我Return格式化为json格式的输出。

然而,我认为我做得比必要的更多,因为我首先将DataSet的内容转储到Dictionary中,然后将Return放入Dictionary中。

如果我在列上使用别名并想输出所有列,是否有一种方法可以像Dictionary一样简单地Return DataSet ?如果没有,我如何用尽可能少的行来完成这个?

Dim conn As New SqlConnection
conn.ConnectionString = Module1.DBConn2
Dim sqlCommand = New SqlCommand("Select id, column1, column2... From table1", conn)
    conn.Open()
    Dim sqlDataset As DataSet = New DataSet()
    Dim sqlDataAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
    sqlDataAdapter.Fill(sqlDataset)
    conn.Close()
    Dim jsonDict(sqlDataset.Tables(0).Rows.Count - 1) As Dictionary(Of Object, Object)
    Dim i As Integer = 0
    For Each rs As DataRow In sqlDataset.Tables(0).Rows
        jsonDict(i) = New Dictionary(Of Object, Object)
        jsonDict(i).Add("id", rs.Field(Of Object)("id"))
        jsonDict(i).Add("column1", rs.Field(Of Object)("column1"))
        jsonDict(i).Add("column2", rs.Field(Of Object)("column2"))
        ...
    i = i + 1
Next
Return jsonDict

返回WebMethod中DataSet的关联数组

1. pass the array of DataSets to a web service web method that
takes a DataSet as a parameter.
例如:

[webmethod]
public static void(Dataset[] a)
{
// do something
}

你也可以用XML操作来填充数据集:

2. Use the DataSet.GetXML method (which returns an XML string representing
the DataSet) and pass that string to a web service web method. Then that
web method would declare a new DataSet and using the ReadXML method, it
could read the XML string into itself. You will need to load the XML string
into an XMLDocument and then pass it to an XMLNodeReader so that it can be
read into the DataSet using ReadXML.
3. fill up each dataset from the array. and pick a dataset through loop operation and after picking the dataset get the table in that dataset. finally you can get the row using the process as below(if needed):
DataRow dr;
Dataset ds;
DataTable dt;
dt = ds.Tables(0);
foreach(dr in ds.tables(0).rows){
// dr("ColName") to get value;
}

你可以得到每一行的id(主键):修改返回类型为datatable

return sqlDataset.Tables(0);

这个链接可以帮助你链接到

或此链接