Я приношу данные во многих Table, поэтому хочу, чтобы он преобразовал их в json при возврате. Итак, я попробовал, как показано ниже

public static string DataSetToJSON(DataSet dset)
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
        Dictionary<string, object> childRow;
        foreach (DataRow row in dset.Rows)
        {
            childRow = new Dictionary<string, object>();
            foreach (DataColumn col in dset.Columns)
            {
                childRow.Add(col.ColumnName, row[col]);
            }
            parentRow.Add(childRow);
        }
        return jsSerializer.Serialize(parentRow);
    }

Но я получаю сообщение об ошибке на dset.Rows

System.data.dataset не содержит определения для Rows ....

0
hud 13 Мар 2018 в 17:16

2 ответа

Лучший ответ

После проверки и некоторых исследований, а также под руководством SLAKS я, наконец, сделал это.

public static string DataSetToJSON(DataSet ds)
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
        Dictionary<string, object> childRow;

        foreach (DataTable table in ds.Tables)
        {
            foreach (DataRow dr in table.Rows)
            {
                childRow = new Dictionary<string, object>();
                foreach (DataColumn col in table.Columns)
                {
                    childRow.Add(col.ColumnName, dr[col]);
                }
                parentRow.Add(childRow);
            }
        }

        return jsSerializer.Serialize(parentRow);
    }

Спасибо, SLAKS

0
hud 13 Мар 2018 в 14:38

Набор данных - это набор таблиц данных. Строки будут существовать в таблице данных. Итак, вам нужно проверить данные в наборе данных, а затем перебрать существующие столбцы и строки.

Попробуйте получить первую дату:

DataTable firstTable = dset.Tables[0]; 

Если есть много таблиц данных, вам нужно зациклить таблицы данных как:

foreach(DataTable dt in dset.Tables)
{
  //then you can get the rows and columns values for each table as above
   foreach (DataRow row in dt.Rows)
   {
       childRow = new Dictionary<string, object>();
       foreach (DataColumn col in dt.Columns)
       {
          childRow.Add(col.ColumnName, row[col]);
       }
       parentRow.Add(childRow);
   }
}
0
Hussein Salman 13 Мар 2018 в 14:37