有一种简单的方法可以将DataTable
转换为HashTable
或SQLDataReader
转换为HashTable
吗?我必须通过javascriptserializer解析它。我使用的代码有一些问题:
try
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(query, conn))
{
conn.Open();
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
dt.Load(dr);
}
}
Hashtable sendData = new Hashtable();
foreach (DataRow drIn in dt.Rows)
{
sendData.Add(drIn["orderNumber"].ToString(), drIn["customerName"].ToString());
}
sendData.Add("orderNum", order);
JavaScriptSerializer jss = new JavaScriptSerializer();
string output = jss.Serialize(sendData);
return output;
}
catch (Exception ex)
{
return ex.Message + "-" + ex.StackTrace;
}
从数据库中的一个表查询时,它会给出正确的结果,但是从另一个表中查询它有问题。
还有其他办法吗?
答案 0 :(得分:0)
您可以使用以下函数将DataTable转换为HashTable,
public static Hashtable convertDataTableToHashTable(DataTable dtIn,string keyField,string valueField)
{
Hashtable htOut = new Hashtable();
foreach(DataRow drIn in dtIn.Rows)
{
htOut.Add(drIn[keyField].ToString(),drIn[valueField].ToString());
}
return htOut;
}
然后在你的代码中使用,
Hashtable sendData = new Hashtable();
//You need to pass datatable, key field and value field
sendData = convertDataTableToHashTable(dt, "orderNumber", "customerName");
答案 1 :(得分:-1)
public static Hashtable Fn_ConvertDataTableToHashTable(DataTable dtTable, int iRow)
{
Hashtable hshTable = new Hashtable();
if (CommonUtil.Fn_CheckDatatableHasValue(dtTable))
{
foreach (DataColumn column in dtTable.Columns)
{
hshTable.Add(column.ColumnName, dtTable.Rows[iRow][column.ColumnName].ToString());
}
}
return hshTable;
}